前段时间看到XDash分享的一篇文章,提到他做了叫西塞罗的工具,可以根据自己的喜好,高亮出一本书的内容,进行快速阅读。
自己后来想了下利用机器学习也可以做,同时自己又正好在研究机器学习,这正好是个实践的场景,参考了几篇文章,大体了解了原理,因为涉及版权原因,我们只是作为学习研究,不做公开。
- 整理出自己喜欢和不喜欢的词语、句子、段落,分成两个文件,作为不同的标签分类

- 导入训练数据
# 训练集
likes = []
for line in load_file("/Users/funplususer/code/ai/train_data/like.txt"):
likes.append(line)
unlikes = []
for line in load_file("/Users/funplususer/code/ai/train_data/unlike.txt"):
unlikes.append(line)
texts = [] + likes + unlikes
print("texts:{}".format(texts))
# 各文本对应类别
y = []
for index in range(len(likes)):
y.append("喜欢")
for index in range(len(unlikes)):
y.append("不喜欢")
print("y:{}".format(y))
# 加载停用词
stop_words = load_stopwords("/Users/funplususer/code/ai/stop_word/baidu_stopwords.txt")
tf = TfidfVectorizer(stop_words=stop_words, max_df=0.5)
# tf.get_params()
X = tf.fit_transform(texts)
print("get_feature_names:{}".format(tf.get_feature_names()))
print("X:{}".format(X.toarray()))- 利用多项式朴素贝叶斯算法训练模型
# 多项式朴素贝叶斯
m = MultinomialNB(alpha=0.001)
# m.get_params()
m.fit(X, y)- 将一本电子书的内容导入模型进行测试,将标记喜欢的文字高亮出来。
test = []
test.append(p.string)
X_test = tf.transform(test)
proba = m.predict_proba(X_test)
print("proba:{}".format(proba))
# 预测数据
predicted_labels = m.predict(X_test)
print(predicted_labels)
# highlight text ....