用于处理和分类自然语言的库/开源软件有哪些?我有一个充满字符串的数据库,它是特定项目的用户描述。我想对这些词进行分类,以消除无用的东西,并对该项目适合的类别(例如技术,运动,音乐)作出有根据的猜测。
我意识到这是一个相当具体的要求,而且我对自然语言处理的知识非常有限。我想知道什么是最好的,如果可能的话,最便宜的计算方法做出这些预测?
我更喜欢在Ruby中这样做,但Python或Java也是可以接受的。
答案 0 :(得分:3)
至于Python,目前我可以推荐一下:
它具有良好的文档,并且在自然语言处理领域具有许多功能。在Ubuntu存储库(python-nltk)中也有一个包,所以它很容易安装和试验。
在大多数情况下,您需要访问高质量的语料库。
答案 1 :(得分:2)
答案 2 :(得分:1)
任何编程语言的顶级语言库之一称为Wordnet。它用于解析文本,分解文本,并确定词性。如果你看到IBM的Watson在电视节目Jeopardy上竞争,你就会看到Wordnet正在运行,因为它是所使用的技术之一。
有一个“WordNet for Ruby”宝石。我没有用它,但我多次使用过Wordnet。希望Wordnet的安装变得更容易,因为它过去很痛苦。
Perl有我使用的Lingua::Wordnet模块。此外,快速搜索“Python + wordnet”会返回几个点击。
答案 3 :(得分:1)
因此,您有一堆文本块要分类到不同的类别。问题与垃圾邮件过滤相同。除spam filter之外,仅将电子邮件分为两类,但您有几个,但相同的原则(Bayes' theorem)仍然适用。 Naive Bayes classifier是解决该问题的最简单且计算要求最低的方法之一。然后,您可以利用该知识并使用更复杂的方法(如神经网络)来进行更准确的分类。一本关于这个主题的好书是Programming Collective Intelligence。
另请参阅dANN这是一个具有朴素贝叶斯分类器实现的Java库以及许多其他用于预测分析的工具。这个video about Google Predict显示了如何将句子分类为语言。可以使用相同的方法几乎逐字地对描述进行分类。
答案 4 :(得分:1)
检查此自然语言处理工具包http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits列表。 这里没有提到的一些: Weka,Mallet,斯坦福分类器