NLP实战:朴素贝叶斯分类器

需要将语句分割,然后以向量形式表示。

朴素贝叶斯有三类

  • 高斯模型
  • 多项式模型
  • 伯努利模型

高斯模型用于处理特征值为连续的情况,多项式用于离散特征(一般用于文本分类)。

在sklearn中将语句转为向量有两种方式
词袋模型(词的频数)和TF-IDF特征向量

import jieba
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer

a = ["我是一名学生", "踏实努力刻苦学习", "我不想学习"]
b = [" ".join(jieba.cut(item)) for item in a]


vec = CountVectorizer()
words = vec.fit_transform(b)
print(words.toarray())
print(vec.vocabulary_)
print(vec.transform([" ".join(jieba.cut("我踏实学习"))]).toarray())

结果如下

[[1 0 0 0 0 1 0]
 [0 0 1 1 1 0 1]
 [0 1 0 0 1 0 0]]
{'一名': 0, '学生': 5, '踏实': 6, '努力': 3, '刻苦': 2, '学习': 4, '不想': 1}
[[0 0 0 0 1 0 1]]

要看向量需要使用.toarray()显示,之后可以使用分类器进行分类

mnb = MultinomialNB()
mnb.fit(x_count_train, y_train)
print(mnb.score(x_count_test, y_test))

参考:https://blog.csdn.net/u012162613/article/details/48323777

你可能感兴趣的:(自然语言处理)