使用书籍类别列表 NLP 比较书籍

数据挖掘 机器学习 Python nlp nltk 斯派西
2022-02-17 17:59:53

我有一个书籍数据库。每本书都有一个描述本书类型/主题的类别列表(我使用 Python 模型)。

列表中的类别大部分时间由 1 到 3 个单词组成。

图书类别列表示例:

['Children', 'Flour mills', 'Jealousy', 'Nannies', 'Child labor', 'Conduct of life'],
["Children's stories", 'Christian life'],
['Children', 'Brothers and sisters', 'Conduct of life', 'Cheerfulness', 'Christian life'],
['Fugitive slaves', 'African Americans', 'Slavery', 'Plantation life', 'Slaves', 'Christian life', 'Cruelty']

我想创建/使用算法来比较书籍并使用 NLP/机器学习模型找到两本书之间的相似性。

类别没有明确定义,并且往往会发生变化。例如,可能有一个类别'story'和另一个调用'stories',因为系统中的文本不使用保存的类别,而是一个打开的文本框。到目前为止,我尝试了 2 种算法:

  • 与 WordNet 的余弦相似性 - 拆分类别以获得一袋单词并检查每个单词在其他书籍列表中是否有同义词。
  • nlp使用spacy 库 (Python) 的模型 - 距离算法检查相似度。

到目前为止,我使用nltk包中的 WordNet 模型和spacy. 我对这两种算法有疑问,因为当算法比较一个包含 2 或 3 个单词的类别时,结果并不准确,而且它们中的每一个都有特定的问题。

我可以使用哪些可以处理包含 2 个或 3 个单词的字符串的算法/Python 模型来比较书籍?

顺便说一句,这是我第一次在这里问。如果您需要有关数据库的更多详细信息或我到目前为止所做的事情,请告诉我。

1个回答

您的问题可以被定义为多标签分类,每个实例可以有多个标签。对于给定的书,预测哪些标签是可能的。

在 Python 中,有scikit-multilearn是为多标签分类问题而设计的。

此外,您可能希望合并相似的标签(例如,“故事”和“故事”)。可以通过查找和替换来完成合并。