NLP
内容
- 基本文本处理技能
1.1 分词的概念(分词的正向最大、逆向最大、双向最大匹配法);
1.2 词、字符频率统计;(可以使用Python中的collections.Counter模块,也可以自己寻找其他好用的库) - 2.1 语言模型中unigram、bigram、trigram的概念;
2.2 unigram、bigram频率统计;(可以使用Python中的collections.Counter模块,也可以自己寻找其他好用的库) - 文本矩阵化:要求采用词袋模型且是词级别的矩阵化
步骤有:
3.1 分词(可采用结巴分词来进行分词操作,其他库也可以);
3.2 去停用词;构造词表。
3.3 每篇文档的向量化。
实现
- 中文分词:汉语自然语言处理的第一部分是中文分词。因为中文不像英文那样,实行分词连写,即词与词之间用空格分隔。
在分析中文文本之前必须将一个汉字序列切分成一个一个单独的词,这个过程称为中文分词。
中文分词主要分为机械师分词法(基于词典),基于语法和规则分词法,基于统计分词法。
最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典中最长词为“中华人民共和国”共7个汉字,则最大匹配起始字数为7个汉字。然后逐字递减,在对应的词典中进行查找。
(1)正向最大匹配法:正向即从前往后取词,从7->1,每次减一个字,直到词典命中或剩下1个单字。
(2)逆向最大匹配法:逆向即从后往前取词,其他逻辑和正向相同。
(3)双向最大匹配法:两种算法都切一遍,然后根据大颗粒度词越多越好,非词典词和单字词越少越好的原则,选取其中一种分词结果输出。
2. 词、字符频率统计:
import jieba
txt = open("红楼梦.txt", "r", encoding="gb18030").read()
import collections
txt1 = txt
txt1 = txt1.replace('\n', '') # 删掉换行符
txt1 = txt1.replace(',', '') # 删掉逗号
txt1 = txt1.replace('。', '') # 删掉句号
mylist = list(txt1)
mycount = collections.Counter(mylist