问题:Java或Python用于自然语言处理
我想知道哪种编程语言更适合自然语言处理。Java还是Python?我发现了很多与此有关的问题和答案。但是我仍然迷失在选择使用哪一个上。
我想知道用于Java的NLP库,因为有很多库(LingPipe,GATE,OpenNLP,StandfordNLP)。对于Python,大多数程序员都建议使用NLTK。
但是,如果我要对非结构化数据(只是自由格式的纯英文文本)进行一些文本处理或信息提取,以获得一些有用的信息,那么最佳选择是什么?Java还是Python?合适的图书馆?
更新
我要做的是从非结构化数据中提取有用的产品信息(例如,用户使用不太标准的英语来制作有关手机或笔记本电脑的不同形式的广告)
回答 0
Java vs Python for NLP非常偏爱或必需。根据公司/项目的不同,您将需要使用其中一个,而除非您负责一个项目,否则通常没有太多选择。
除了NLTK
(www.nltk.org),实际上还有其他用于文本处理的库python
:
- TextBlob:http : //textblob.readthedocs.org/en/dev/
- Gensim:http://radimrehurek.com/gensim/
- 模式:http : //www.clips.ua.ac.be/pattern
- Spacy :: http://spacy.io
- 橙色:http://orange.biolab.si/features/
- 菠萝:https : //github.com/proycon/pynlpl
(有关更多信息,请参见https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search)
对于Java
,还有其他许多吨,但这是另一个清单:
- 冻结:http : //nlp.lsi.upc.edu/freeling/
- OpenNLP:http://opennlp.apache.org/
- LingPipe:http://alias-i.com/lingpipe/
- Stanford CoreNLP:http : //stanfordnlp.github.io/CoreNLP/(随附其他语言的包装器,包括python)
- CogComp NLP:https://github.com/CogComp/cogcomp-nlp
这是基本字符串处理的不错比较,请参阅http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
GATE与UIMA与OpenNLP的有用比较,请参阅https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
如果您不确定使用NLP的语言是什么,我个人会说“可以为您提供所需分析/输出的任何语言”,请参阅要学习自然语言处理的语言或工具?
这是NLP工具的最新版本(2017):https : //github.com/alvations/awesome-community-curated-nlp
NLP工具的较旧列表(2013):http ://web.archive.org/web/20130703190201/http: //yauhenklimovich.wordpress.com/2013/05/20/tools-nlp
除了语言处理工具之外,您非常需要将machine learning
工具合并到NLP
管道中。
有一个整体的范围Python
和Java
,并再次就看个人喜好和库是否人性化不够:
python中的机器学习库:
- 斯克莱恩(Scikit-learn):http ://scikit-learn.org/stable/
- 牛奶:http : //luispedro.org/software/milk
- Scipy:http://www.scipy.org/
- Theano:http : //deeplearning.net/software/theano/
- PyML:http://pyml.sourceforge.net/
- pyBrain:http://pybrain.org/
- Graphlab Create(商用工具,但可免费获得一年的学术许可):https : //dato.com/products/create/
(有关更多信息,请参见https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search)
- Weka:http : //www.cs.waikato.ac.nz/ml/weka/index.html
- 木槌:http : //mallet.cs.umass.edu/
- Mahout:https : //mahout.apache.org/
随着最近(2015年)NLP中的深度学习海啸,您可能可以考虑:https : //en.wikipedia.org/wiki/Comparison_of_deep_learning_software
我将避免出于非偏爱/中立的目的列出深度学习工具。
其他也需要NLP / ML工具的Stackoverflow问题:
回答 1
这个问题很开放。就是说,下面而不是选择一个,而是根据您要使用的语言进行比较(因为两种语言都有不错的库)。
Python
在Python方面,首先要看的是Python Natural Language Toolkit。正如他们在描述中所指出的那样,NLTK是构建Python程序以使用人类语言数据的领先平台。它为50多种语料库和词汇资源(如WordNet)提供了易于使用的界面,并提供了一套用于分类,标记化,词干,标记,解析和语义推理的文本处理库。
您还可以查找一些出色的代码,这些代码源自基于Python的Google自然语言工具包项目。您可以在GitHub上找到该代码的链接。
爪哇
首先看的是斯坦福大学的自然语言处理小组。那里分发的所有软件都是用Java编写的。所有最新发行版都需要Oracle Java 6+或OpenJDK 7+。分发程序包包括用于命令行调用的组件,jar文件,Java API和源代码。
您在许多机器学习环境中看到的另一个很棒的选择(通用选择)是Weka。Weka是用于数据挖掘任务的机器学习算法的集合。这些算法既可以直接应用于数据集,也可以从您自己的Java代码中调用。Weka包含用于数据预处理,分类,回归,聚类,关联规则和可视化的工具。它也非常适合开发新的机器学习方案。