1

我正在尝试制作一个大量使用 pos 标记的应用程序。但对我来说,nltk 的 pos 标记功能似乎不符合标准 - 例如:

import nltk
text = "Obama delivers his first speech."

sent  =  nltk.sent_tokenize(text)


loftags = []
for s in sent:
    d = nltk.word_tokenize(s)   

    print nltk.pos_tag(d)

结果 :

akshayy@ubuntu:~/summ$ python nn1.py [('Obama', 'NNP'), ('delivers', 'NNS'), ('his', 'PRP$'), ('first', ' JJ'), ('speech', 'NN'), ('.', '.')]

与斯坦福 NLP 相比,这并不好。现在,当我有足够的时间和精力投入到 Python 环境中时,转向 Java 对我来说似乎并不实际。此外,与 java 相比,我更倾向于 C,因此 Python 也更接近于未来的使用。因此第一个问题是:1) 你真的认为 Java 更适合具有大量可用工具的 nlp 任务吗?我做了很好的研究,发现 java 有更大的社区致力于 nlp 任务。

2)相反,有没有什么好的方法可以创建我自己的句子解析器,然后是 pos 标记器,以便灵活地修改将来使用的任何语言。

4

2 回答 2

2

您绝对应该使用基于 Java 的 POS 标记器之一。我使用的是Stanford Core NLP标注器,但还有其他的。NLTK 主要是一个教学工具包,不适合工业强度使用。基于 Java 的标记器也将更快。

但是,使用 Java 工具包并不妨碍您使用 Python 进行工作。在 Python 中编写一个简单地运行 Java 命令并解析结果供您在 Python 代码中使用的包装类是很简单的。

于 2013-04-05T08:54:34.173 回答
0

Python有非常棒的 XML/HTML 解析库,例如 Beautiful Soup[6] 和 Scrape.py[7]。您可以使用这些库快速抓取网络并生成大型数据集以提高模型的性能(因为让我们面对现实,大数据胜过复杂性)考虑您的其他选择:使用像C++这样的编译语言没有意义/Java用于此类工作,除非您需要提高性能(计算速度,而不是模型准确性)。据我所知,Ruby 对于任何机器学习、数据挖掘或自然语言处理任务都是完全没用的。也许你可以使用 Lisp,但在这一点上,Python 拥有更大的生态系统。在此处阅读更多信息 http://www.quora.com/What-programming-languages-are-suitable-for-natural-language-processing

于 2015-05-27T09:08:57.623 回答