这一节概略的介绍了一下分词的内容。
分词是NLP里面很重要的方面。每个NLP任务都需要做文本的规范化,包括
切分单词
单词格式规范化
切分句子
用N表示单词总数,V表示不同的单词数(size of vocabulary),
用shake.txt做了实验,将非字母的字符作为分隔符,统计每个单词的出现次数。
遇到的问题: d和s 的个数非常多,因为文章中经常会出现‘s类似这样的词。这是英文分词的难点。
中文和日文没有空格。
中文词的特点:
一个字是一个音节,只有一个词形
词的平均长度是2.4个字节
中文分词的经典方法:最大匹配(greedy)
从字符串的开始找到字典中能匹配到的最长的词,然后从找出来的词下一个字节开始找
最大匹配不适合用于英文(无空格的英文)分词,因为英文有各种长度的词,特别容易分错。中文相对来说词的长度固定一些。
概率分词的方法优于最大匹配
词的规范化和提取词干
一旦分词完成,我们需要对词进行规范化
在信息检索领域,查询词和索引应该有相同的形式,比如 U.S.A和USA应该规范成USA,这样用户输入U.S.A的时候才能得到正确的搜索结果
当然,也有一些另类,比如 输入window,用户可能是想搜window,windows等,而输入Window的时候,用户可能就只想搜Window,这可能是个品牌名之类的,而不想搜window.
不过在实际中,往往还是将大写字母规范成小写,例外的是句子中间的大写 保持不变,比如General Motors,SAIL
找词干就是找出词本来的形态,比如 are->be
词素(morphemes)有两种:
词干(stem)
词缀(affix)
Porter算法
就是一些规则
比如,删除词尾的ing的时候,只处理ing之前有元音的词