将一个句子分为多个类别

Posted

技术标签:

【中文标题】将一个句子分为多个类别【英文标题】:Classify a sentence into multiple categories 【发布时间】:2018-04-26 09:18:39 【问题描述】:

这里是 NLTK 和 Scikit-learn 的初学者。我希望能够将给定的句子(甚至是段落)分类为一组类别。就类别而言,我并不是说只有两个类别,比如垃圾邮件而不是垃圾邮件或好情绪和坏情绪,这意味着它有多个(两个以上)类别可供选择。请帮助我选择最简单的算法来解决这个问题。提前致谢。

【问题讨论】:

事实上,不看数据就无法判断哪种算法最好或最有效。 【参考方案1】:

通过您在帖子中使用的标签,我看到您知道machine learning...这是完成这个项目的好方法。

您需要的是大量的样本数据,即一个文本表(样本句子、段落等等......),然后是一个说明它所在类别的列。

你要做的是train程序,在样本文本中寻找模式,如果你有足够的样本数据,你可以然后analyze文本,让程序输出它是什么类别。

您可以使用TensorFlow 作为您的机器学习框架。

我建议您从一些更简单的项目开始,以了解机器学习的工作原理以及最有效的方法。

【讨论】:

也就是说,如果我有足够的分类数据,那么句子中单词的简单频率分布就足以对数据进行分类?感谢您的回复。 我从来没有尝试过这样的事情......但我看不出它太难测试了。根据我的理解......是的......它应该。【参考方案2】:

如果我是对的,您正在尝试对您的数据集执行主题建模。 就我而言,您可以使用 LDA(潜在狄利克雷分配),但您有义务指定主题数量,您可以进行多次测试以找到合适的主题数量值。 这是一个使用 python 执行的 LDA 示例,并演示了如何检查路透社新闻数据集子集的模型。下面的输入 X 是一个文档项矩阵。

 >>> import numpy as np
>>> import lda
>>> X = lda.datasets.load_reuters()
>>> vocab = lda.datasets.load_reuters_vocab()
>>> titles = lda.datasets.load_reuters_titles()
>>> X.shape
(395, 4258)
>>> X.sum()
84010
>>> model = lda.LDA(n_topics=20, n_iter=1500, random_state=1)
>>> model.fit(X)  # model.fit_transform(X) is also available
>>> topic_word = model.topic_word_  # model.components_ also works
>>> n_top_words = 8
>>> for i, topic_dist in enumerate(topic_word):
...     topic_words = np.array(vocab)[np.argsort(topic_dist)][:-n_top_words:-1]
...     print('Topic : '.format(i, ' '.join(topic_words)))
Topic 0: british churchill sale million major letters west
Topic 1: church government political country state people party
Topic 2: elvis king fans presley life concert young
Topic 3: yeltsin russian russia president kremlin moscow michael
Topic 4: pope vatican paul john surgery hospital pontiff
Topic 5: family funeral police miami versace cunanan city
Topic 6: simpson former years court president wife south
Topic 7: order mother successor election nuns church nirmala
Topic 8: charles prince diana royal king queen parker
Topic 9: film french france against bardot paris poster
Topic 10: germany german war nazi letter christian book
Topic 11: east peace prize award timor quebec belo
Topic 12: n't life show told very love television
Topic 13: years year time last church world people
Topic 14: mother teresa heart calcutta charity nun hospital
Topic 15: city salonika capital buddhist cultural vietnam byzantine
Topic 16: music tour opera singer israel people film
Topic 17: church catholic bernardin cardinal bishop wright death
Topic 18: harriman clinton u.s ambassador paris president churchill
Topic 19: city museum art exhibition century million churches

【讨论】:

以上是关于将一个句子分为多个类别的主要内容,如果未能解决你的问题,请参考以下文章

Keras 功能 API:采用多个输入的拟合和测试模型

将文本文档的内容分门别类,查看部分文本

如何使用朴素贝叶斯将数据分类为多个类别?

文本分类/机器学习:我还需要“默认”类别吗?

如何为 4 个类别的文本分类创建训练数据

如何将数据分为 3 个不同的类别