congfig
constant
timer
visualize
log
corpora
train_data
dictionary
processing
clean
cutter
clause
word
flag
model
expert_system
machine_learning
supervised
logistic_regression
naive_bayes
unsupervised
tfidf
word2vector
deep_learning
cnn
rnn
application
ner
classification、sentiment_analysis
statistic
def replace_punctuation(text):
"""替换标点(英→中)"""
text = text.replace('(', '(').replace(')', ')') # 圆括号
text = text.replace('【', '(').replace('】', ')') # 方括号(之后用于关键词高亮)
text = replace_empty_bracket(text) # 空括号
text = re.sub('[;;]+', ';', text) # 分号
text = re.sub('[!!]+', '!', text) # 叹号
text = re.sub('[??]+', '?', text) # 问号
text = re.sub('[.]{3,}|,{3,}|。{3,}|,{3,}|…+', '…', text) # 省略号
text = text.replace("'", '"') # 引号
text = re.sub('(?<=[\u4e00-\u9fa5]),(?=[\u4e00-\u9fa5])', ',', text) # 逗号
text = re.sub('(?<=[\u4e00-\u9fa5])[.](?=[\u4e00-\u9fa5])', '。', text) # 句号
return text.strip().lower() # 转小写
def replace_space(text):
"""清除连续空白"""
text = re.sub('\s*\n\s*', '\n', text.strip())
text = re.sub('[ \f\r\t ]+', ' ', text)
text = re.sub('([\u4e00-\u9fa5]) ([^\u4e00-\u9fa5])', lambda x: x.group(1)+x.group(2), text)
text = re.sub('([^\u4e00-\u9fa5]) ([\u4e00-\u9fa5])', lambda x: x.group(1)+x.group(2), text)
return text
切句
sep10 = re.compile('[\n。…;;]+|(?<=[\u4e00-\u9fa5])[.]+(?=[\u4e00-\u9fa5])').split
sep15 = re.compile('[\n。…;;!!??]+|(?<=[a-z\u4e00-\u9fa5])[.]+(?=[a-z\u4e00-\u9fa5])', re.I).split
sep20 = re.compile('[!!??]+').split
sep30 = re.compile('[,,::]+').split
sep40 = re.compile('\W+').split # 非中英文数字下划线
sep45 = re.compile('[^a-zA-Z\u4e00-\u9fa5]+').split # 非中英文
分词
jiaba、nltk、ltp、foolnltk……
TF-IDF向量化+逻辑回归
from jieba import cut
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
"""语料"""
texts = [
'三个只有一个是新鲜的,其它两个都坏了,买得最差的一次水果',
'京东,才发现你是个骗子,服务更是一样的烂',
'火龙果很小,而且还有一个烂了,发霉了',
'物流慢,收到时有两个底部已开始腐烂',
'屏幕清晰度不高,而且运行速度巨慢',
'贝质量很好,款式时尚,大小合适,做工精致,穿着舒服,服务很好',
'质量很好的,款式也不错,看起来高档大气,卖家服务还好,不错',
'裤子收到了,质量不错,价格便宜,穿着舒服,下次我还会来买的',
'宝贝收到了,试了一下,穿上挺舒服的,是正品,综合给好评',
'裤子挺好看,质量也不错,老公搭配衣服挺好看也很喜欢穿',
]
y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
"""向量转换器"""
vectorizer = TfidfVectorizer(tokenizer=cut, stop_words=set('的在了是和也有为就都说等与才这,'))
X = vectorizer.fit_transform(texts)
"""分类模型"""
clf = LogisticRegression()
clf.fit(X, y)
print(clf.score(X, y))