2011-03-26 55 views
2

在处理和分类自然语言的库/开源软件方面有什么可用的?我有一个充满字符串的数据库,它是特定项目的用户描述。我想对这些词语进行分类,以排除无用词,并根据学生的猜测来确定该词语适合什么类别(例如技术,体育,音乐)。分类自然语言字符串的技巧?

我意识到这是一个相当具体的要求,我的自然语言处理知识非常有限。我想知道什么是最好的,如果可能的话,最简单的计算方式是做出这种预测?

我宁愿在Ruby中这样做,但是Python或Java也是可以接受的。

+0

嗯,这听起来像我在MTurk回来看到的东西。有关? – 2011-03-26 01:18:10

+0

我不得不谷歌MTurk找出那是什么。所以我认为这是一个没有:) – Aidanc 2011-03-26 01:43:05

+0

我有很好的Perl答案给你,但显然你不想听到这些。好吧。 – tchrist 2011-03-26 02:17:55

回答

3

至于Python的,目前我可以建议考虑:

http://www.nltk.org/

它具有良好的文档,以及大量的很多功能在自然语言处理领域的。此外,Ubuntu存储库中还有一个软件包(python-nltk),因此安装和试用很容易。

对于大多数情况下,您需要访问高质量的语料库。

2

不幸的是Ruby没有质量NLP,但是如果你使用JRuby,你可以充分利用Java的质量NLP的如:

GATE

LingPipe

OpenNLP

+0

+1。我使用JRuby和OpenNLP编写了一个工作原型,这是一次非常棒的体验。 – 2011-03-26 21:45:04

1

任何编程语言的顶级语言库之一称为Wordnet。它用于解析文本,分解文本并确定词类。如果您看到IBM的沃森在电视节目Jeopardy上竞争,您看到了Wordnet的行动,因为它是使用的技术之一。

有一个“WordNet for Ruby”宝石。我没有使用它,但我多次使用Wordnet。希望Wordnet的安装过程会变得更加容易,因为这是过去的痛苦。

Perl有我使用过的Lingua::Wordnet模块。另外,快速搜索“Python + wordnet”会返回几个匹配结果。

1

所以你有一堆文本块,你想分为不同的类别。该问题与垃圾邮件过滤相同。除了spam filter只将邮件分为两类,但您有几个,但相同的原则(Bayes' theorem)仍然适用。 A Naive Bayes classifier是解决该问题的最简单和计算要求最低的方法之一。然后,您可以利用这些知识并使用更复杂的方法(如神经网络)来制作更准确的分类。关于这个话题的好书是Programming Collective Intelligence

另请参见dANN这是一个具有Naive Bayes分类器实现和许多其他预测分析工具的Java库。这个video about Google Predict显示了如何将句子分类成语言。几乎可以逐字分类地使用同样的方法。