我正在尝试制作一个大量使用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 [('奥巴马','NNP'),('递送','NNS'),('他'','PRP $'),('第一','JJ'),('演讲','NN') ),('。','。')]
与Stanford NLP相比,这并不好。现在,在这个时刻,当我有足够的投入时间和精力进行Python环境时,转向java对我来说似乎并不实用。此外,与java相比,我更倾向于C,因此Python在未来的使用中也更接近。因此,第一个问题是: 1)您是否真的认为Java对于具有大量可用工具的nlp任务更好。我做了很好的研究,发现java有更大的社区致力于nlp任务。
2)相反,有没有什么好的方法可以创建我自己的句子解析器,然后是pos tagger,可以灵活地修改将来使用的任何语言。
答案 0 :(得分:2)
你绝对应该使用一种基于Java的POS标记器。我使用Stanford Core NLP标记符,但还有其他标记符。 NLTK主要是一个教学工具包,不适合工业强度使用。基于Java的标记器也会快得多。
但是,使用Java工具包并不妨碍您在Python中工作。在Python中编写一个包装器类是很简单的,它只运行Java命令并解析结果,以便在Python代码中使用。
答案 1 :(得分:0)
Python 拥有非常棒的XML / HTML解析库,例如Beautiful Soup [6]和Scrape.py [7]。您可以使用这些库快速抓取Web并生成大型数据集以提高模型的性能(因为让我们面对它,大数据胜过复杂性) 考虑一下您的其他选择:除非您需要提高性能(计算速度,而不是模型准确性),否则使用 C ++ / Java 等编译语言进行此类工作是没有意义的。据我所知,Ruby对于任何机器学习,数据挖掘或自然语言处理任务都是完全没用的。也许你可以使用Lisp,但在这一点上,Python有一个更大的生态系统。 在这里阅读更多 http://www.quora.com/What-programming-languages-are-suitable-for-natural-language-processing