问题可能是(大约100%)主观的,但我需要建议。什么是自然语言处理的最佳语言?我知道Java和C++,但是有没有更简单的方法呢?更具体地说,我需要处理来自许多网站的文本并获取信息。
发布于 2010-11-07 07:33:58
正如我在评论中所说,这个问题不是关于语言,而是关于合适的库。而且在Java和C++中都有大量的NLP libraries。我相信你必须检查其中的一些(两种语言),然后,当你知道所有大量的可用的库时,创建某种“大计划”,如何实现你的任务。所以,在这里,我将给你一些链接,并简要解释什么是什么。
Java
-它就是它的名字的意思--文本处理的通用架构。GATE中的应用是一个流水线。您可以将语言处理资源(如标记器、POS标记器、形态分析器等)放在上面并运行该过程。结果被表示为一组注释-元信息,附加到文本的和平(例如令牌)。除了大量的plugins (包括与WordNet或Stanford Parser等其他自然语言处理资源集成的插件),它还有许多预定义的字典(城市、名称等)。和它自己的类似正则表达式的语言笑话。GATE自带了自己的IDE (GATE Developer),您可以在其中尝试管道设置,然后保存它并从Java代码加载。
-或非结构化信息管理应用程序。它在架构上与GATE非常相似。它还表示管道并生成一组注释。与GATE一样,它也有可视化的IDE,您可以在其中试用您未来的应用程序。不同之处在于,UIMA主要关注信息提取,而GATE执行文本处理,而没有明确考虑其用途。此外,UIMA还附带了简单的REST服务器。
-他们称自己为NLP上开源项目的组织中心,这是最恰当的定义。发展的主要方向是将机器学习算法用于最一般的自然语言处理任务,如词性标注、命名实体识别、共指关系解析等。它还与UIMA有很好的集成,所以它的工具也是可用的。
-可能是具有自然语言处理和机器学习知识的工程师和研究人员的最佳选择。与GATE和UIMA等库不同,它的目标不是提供尽可能多的工具,而是专注于惯用模型。例如,你没有全面的字典,但你可以训练概率算法来创建它!除了它的CoreNLP组件,它提供了最广泛使用的工具,如标记化,POS,NER等,它还有几个非常有趣的子项目。例如,他们的Dependency framework可以让你提取出完整的句子结构。也就是说,例如,您可以轻松地提取有关动词的主语和宾语的信息,这在使用其他NLP工具时要困难得多。
C++
Java UIMA-是的,和C++都有完整的实现。
斯坦福解析器-一些斯坦福大学的项目只有Java语言,另一些项目只有C++,其中一些项目有两种语言的版本。你可以找到他们中的许多here。
API接口
许多web服务API执行特定的语言处理,包括:
-语言识别,命名实体识别,情感分析等等!看看他们的主页--这是非常自我描述的。
-这项服务试图构建包含所有内容的巨型图表。您向它传递一个网页URL,它将使用找到的实体以及它们之间的关系来丰富此页面文本。例如,你向它传递一个带有"Steve Jobs“的页面,它会返回"Apple Inc.”。(粗略地说)再加上这个人是史蒂夫·乔布斯的可能性。
其他建议
是的,你绝对应该看看Python的。它不仅是一个功能强大且易于使用的自然语言处理库,而且是由非常友好的社区创建的优秀scientific stack的一部分。
更新(2017-11-15):7年后,有了更令人印象深刻的工具,很酷的算法和有趣的任务。在这里可以找到一个全面的描述:
发布于 2011-05-25 06:34:47
Python和NLTK
发布于 2010-11-07 10:52:16
ScalaNLP是一个用Scala编写的自然语言处理库,似乎适合您的工作。
https://stackoverflow.com/questions/4115526
复制相似问题