我正在尝试制作一个大量使用词性标记的应用程序。但是 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 [('奥巴马', 'NNP'), ('交付', 'NNS'), ('他的', 'PRP$'), ('第一', 'JJ'), ('演讲', 'NN' ), ('.', '.')]
与斯坦福 NLP 相比,这并不好。现在,当我在Python环境上投入了足够的时间和精力时,转向java对我来说似乎并不实际。另外,与 java 相比,我更倾向于 C,因此 Python 也更适合将来的使用。因此第一个问题是: 1) 你真的认为 Java 更适合拥有大量可用工具的 nlp 任务吗?我做了很好的研究,发现 java 有更大的社区致力于 nlp 任务。
2)相反,有没有什么好的方法可以让我创建自己的句子解析器,然后创建 pos 标记器,以便能够灵活地修改将来使用的任何语言。
最佳答案
您绝对应该使用基于 Java 的 POS 标记器之一。我用Stanford Core NLP标记器,但还有其他标记器。 NLTK 主要是一个教学工具包,不适合工业强度使用。基于 Java 的标记器也会快得多。
但是,使用 Java 工具包并不妨碍您使用 Python 进行工作。在 Python 中编写一个包装类非常简单,它只需运行 Java 命令并解析结果以供您在 Python 代码中使用。
关于java - 常见 nlp 任务的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15819673/