自然语言处理之未登录词(一)

在中文自然语言处理过程中,我们会遇到很多其他语言不会有的困难,其中一个困难就是分词。首先,因为中文的词与词之间没有空格,从而产生分词歧义的难题,不过目前很多语言模型已经能很好的解决这个难题了。其次,由于中文中存在很多没有被收录在分词词表中但必须切分出来的词,包括各类专有名词(人名、地名、机构名等)、新词等等,从而产生未登录词的难题,不过目前已经广泛使用命名实体识别(NER)来识别出名、地名、机构名等专有名词,较好的解决了专有名词的识别难题,而对于新词,可以利用N-Gram+凝聚度+自由度的方法来较好的解决。接下来,我将介绍利用N-Gram+凝聚度+自由度发现新词的方法,步骤如下:

步骤一、去掉文本中各种无用的符号

定义一个remove_syb函数,输入words字符串内容,去掉各种无用的符号,输出格式化之后的字符串

def remove_syb(words):
    unused_words = u" \t\r\n,。:;“‘”【】『』|=+-——()*&……%¥#@!~·《》?/?<>,.;:'\"[]{}_)(^$!`"
    unused_english = u"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
    for i in unused_words:
        words = words.replace(i, "")
    for i in unused_english:
        words = words.replace(i, "")
    return words

步骤二、通过N-Gram分词后统计的词频和频率来找到词的边界

N-Gram分词(也称交叉切分算法),是指拆分成n个字符算一个关键字。 比如一元,就是一个汉字当成一个词语,建立成一个索引;二元的话,就是2个字符算一个词语,把所有可能出现的2个字符组合都拿出来。

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值