如何用机器学习找出自己喜欢的文字
前段时间看到XDash分享的一篇文章,提到他做了叫西塞罗的工具,可以根据自己的喜好,高亮出一本书的内容,进行快速阅读。
 

自己后来想了下利用机器学习也可以做,同时自己又正好在研究机器学习,这正好是个实践的场景,参考了几篇文章,大体了解了原理,因为涉及版权原因,我们只是作为学习研究,不做公开。
 
  1. 整理出自己喜欢和不喜欢的词语、句子、段落,分成两个文件,作为不同的标签分类
notion image
  1. 导入训练数据
# 训练集
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()))
  1. 利用多项式朴素贝叶斯算法训练模型
# 多项式朴素贝叶斯
m = MultinomialNB(alpha=0.001)
# m.get_params()

m.fit(X, y)
  1. 将一本电子书的内容导入模型进行测试,将标记喜欢的文字高亮出来。
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 ....

参考文章