参考资料:
文本预处理结巴分词

1、基本文本处理
1.1 分词的概念
分词技术就是搜索引擎针对用户提交查询的关键词串进行的查询处理后根据用户的关键词串用各种匹配方法进行的一种技术。

分词算法可分为三大类:基于字典、词库匹配的分词方法;基于词频度统计的分词方法和基于字标注的分词方法。

几种常见的方法:
最大匹配法:以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典中最长词为“中华人民共和国”共7个汉字,则最大匹配起始字数为7个汉字。然后逐字递减,在对应的词典中进行查找。
正向最大匹配法:对句子从左到右进行扫描,尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配。
逆向最大匹配法:对句子从右到左进行扫描,尽可能地选择与词典中最长单词匹配的词作为目标分词,然后进行下一次匹配。
双向最大匹配法:将正向最大匹配算法和逆向最大匹配算法进行比较,从而确定正确的分词方法。

1.2 应用pyhon中collections.Counter模块进行词、字符频率统计

import jieba
from collections import Counter
seg_list = list(jieba.cut('自然语言处理之特征提取',cut_all=False)) 
WordCount = Counter(seg_list )  # 单词统计
print(WordCount)

txt = '自然语言处理之特征提取'
StatisticalCharacters = Counter(txt) # 字符统计
print(StatisticalCharacters)

2、语言模型

语言模型 (Language Model) 是用来计算一个句子出现概率的模型。

2.1 语言模型中unigram、bigram、trigram
unigram 一元分词,把句子分成一个一个的汉字;
bigram 二元分词,把句子从头到尾每两个字组成一个词语;
trigram 三元分词,把句子从头到尾每三个字组成一个词语。

2.2 应用pyhon中collections.Counter模块进行unigram、bigram频率统计

3、文本矩阵化
步骤: 分词——去停用词、构造词表——每篇文档的向量化
参考博文:特征提取

import jieba
import pandas as pd
import tensorflow as tf
from collections import Counter
from gensim.models import Word2Vec
from sklearn.feature_extraction.text import CountVectorizer
    
### 分词
data=pd.read_csv("./datatest.csv")
print(data.head(10)) 
data['word_count']=train['tweet'].apply(lambda x:len(str(x).split(" ")))
data[['tweet','word_count']].head()
data['char_count']=train['tweet'].str.len()
data[['tweet','char_count']].head()

def avg_word(sentence):
    words=sentence.split()
    return (sum(len(word) for word in words)/len(words))

data['avg_word']=train['tweet'].apply(lambda x:avg_word(x))
data[['tweet','avg_word']].head()

### 去停用词
sentence = "this is a apple"
filter_sentence= [w for w in sentence.split(' ') if w not in stopwords.words('english')]
print(filter_sentence)

from nltk.corpus import stopwords 
stop = set(stopwords.words('english')) 
train['stopwords']=train['tweet'].apply(lambda sen:len([x for x in sen.split() if x in stop]))
train[['tweet','stopwords']].head()