一、.基本文本处理技能
正向最大匹配法
分词目标:
在词典中进行扫描,尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配。
算法流程:
从前往后取词,每次减一个字,直至词典命中或剩下1个单字。
假设词典中最长的单词为 5 个,那么最大匹配的起始子串字数也为 5 个
(1)从左往右读入子串,扫描字典,测试读入的子串是否在字典中
(2)如果存在,则从输入中删除掉该子串,重新按照规则取子串,重复(1)
(3)如果不存在于字典中,则从右向左减少子串长度,重复(1)
逆向最大匹配法
分词目标:
在词典中进行扫描,尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配。 在实践中,逆向最大匹配算法性能优于正向最大匹配算法。
算法流程:
从后往前取词,每次减一个字,直至词典命中或剩下1个单字。
假设词典中最长的单词为 5 个,那么最大匹配的起始子串字数也为 5 个
(1)从右往左读入子串,扫描字典,测试读入的子串是否在字典中
(2)如果存在,则从输入中删除掉该子串,重新按照规则取子串,重复(1)
(3)如果不存在于字典中,则从左向右减少子串长度,重复(1)
双向最大匹配法
分词目标:
将正向最大匹配算法和逆向最大匹配算法进行比较,从而确定正确的分词方法。
算法流程:
正向最大与逆向最大两种算法都进行一遍分词,根据词的颗粒度越大越好且单字和非字典词越少越好,进行分词。
(1) 比较正向最大匹配和逆向最大匹配结果
(2) 如果分词数量结果不同,那么取分词数量较少的那个
(3) 如果分词数量结果相同
分词结果相同,可以返回任何一个
分词结果不同,返回单字数比较少的那个
1.2.1 字频
import numpy as np
from collections import Counter
word="大连海事大学一百一十周年快乐"
result=Counter(word)
print(result)
1.2.2 词频
from collections import Counter
import jieba
word="大连海事大学一百一十周年快乐"
seg_list = list(jieba.cut(word))
result = Counter(seg_list )
print(result)