机器学习 - 使用 NLP 解决我的问题的算法建议

数据挖掘 机器学习 Python nlp 文本挖掘 向量空间模型
2022-03-07 14:33:18

我正在为我的问题寻找一种机器学习算法。

我有一组句子,例如,

["The cat in the hat disabled", "A cat is a fine pet ponies.", "Dogs and cats make good pets.","I haven't got a hat."]

和搜索词,如,

["cat","hat"]

我想将我的句子列表和搜索词转换为向量空间,并在我的句子列表和搜索词列表之间找到匹配分数。

我期望的输出类型是,

[("The cat in the hat disabled",0.9), ("A cat is a fine pet ponies.",0.5), "(Dogs and cats make good pets.",0.6),("I haven't got a hat.",0.49)]

请为我的任务建议一种机器学习算法,如果可能,请分享参考链接。

如果您有任何疑问或需要更多信息,请告诉我。我目前正在为此https://github.com/josephwilk/semanticpy使用语义

我收到许多搜索词的键错误。它不对句子列表执行词干提取和词形还原,而仅对搜索词列表执行。

请帮助解决这个问题。

3个回答

2016 年的 PyCon 上有一个关于这个主题的非常好的视频。关于如何向量化你的句子以及基于这些向量进行预测有一个非常深入的描述。

我认为这会对你有很大帮助。这就是我在学习如何进行情绪分析时使用的。

对于Doc2Vec 来说,这看起来像是一个合适的任务,它是一种构建段落嵌入的算法。对于使用示例的良好实现,您可以尝试gensim

其他选项可以使用word2vec和使用向量平均或求和来构建句子向量(看看这个)。

有关更多方法,请查看这两个教程,您可以在其中了解如何实现 LSA、LDA、TFIDF:

https://nlpforhackers.io/topic-modeling/

https://medium.com/mlreview/topic-modeling-with-scikit-learn-e80d33668730

你需要先做 fit_transform 然后转换,这里是示例

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.feature_extraction.text import TfidfVectorizer


train_set = ["president of India","machine learning is awesome", "python is awesome", "thanks for reading"]

tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix_train = tfidf_vectorizer.fit_transform(train_set)
tfidf_matrix_test = tfidf_vectorizer.transform(["president"])

print(cosine_similarity(tfidf_matrix_train,tfidf_matrix_test))