【问题标题】:Efficiency in common nlp tasks常见 nlp 任务的效率
【发布时间】:2013-04-04 19:07:18
【问题描述】:

我正在尝试制作一个大量使用 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 标记器,以便灵活地修改将来使用的任何语言。

【问题讨论】:

    标签: java python nlp


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 2018-01-29
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 2014-03-28
        • 2012-11-28
        • 1970-01-01
        • 2018-04-30
        • 2021-12-29
        相关资源
        最近更新 更多