Java或Python的自然语言处理
我想知道哪种编程语言对于自然语言处理更好。 Java还是Python ? 我发现了很多关于它的问题和答案。 但是我仍然迷失在select使用哪一个。
我想知道哪个NLP库用于Java,因为有很多库(LingPipe,GATE,OpenNLP,StandfordNLP)。 对于Python,大多数程序员推荐NLTK。
但是如果我要做一些文本处理或者从非结构化数据中提取信息 (只是免费形成简单的英文文本)来获取一些有用的信息,那么最好的select是什么? Java还是Python? 合适的库?
更新
我想要做的是从非结构化数据中提取有用的产品信息(例如,用户使用不是很标准的英语语言对手机或笔记本电脑进行不同forms的广告)
Java与Python的NLP是非常优先或必要的。 取决于公司/项目,您需要使用其中一个或另一个,除非您正在进行项目,否则通常没有多lessselect。
除了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
,还有其他的方面,但这里有另一个列表:
- Freeling : http : //nlp.lsi.upc.edu/freeling/
- OpenNLP : http : //opennlp.apache.org/
- LingPipe : http : //alias-i.com/lingpipe/
- 斯坦福CoreNLP : http : //stanfordnlp.github.io/CoreNLP/ (与其他语言的包装,包括Python)
- CogComp NLP : https : //github.com/CogComp/cogcomp-nlp
这是一个很好的比较基本的string处理,请参阅http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.html
GATE vs UIMA与OpenNLP的有用比较,请参阅https://www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version=4
如果你不确定,NLP的语言是什么,我个人会说,“任何语言都会给你想要的分析/输出”,请参阅自然语言处理学习哪种语言或工具?
这是一个相当近期(2017年)的NLP工具: 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
pipe道中。
在Python
和Java
有一个完整的范围,而且它又一次取决于它的偏好以及这些库是否足够用户友好:
Python中的机器学习库:
- Sklearn (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创build (商业工具,但1年免费学术许可): 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问题:
- 机器学习和自然语言处理
- 有兴趣进行自然语言处理的人有什么好的起点?
- 自然语言处理
- Java中的自然语言处理(NLP)
- 有没有一个很好的自然语言处理库
- Java的简单自然语言处理启动
- 哪些图书馆提供基本或高级的NLP方法?
- 最新的优秀语言和自然语言处理书籍的基础知识
- (用于NER) 实体提取/识别与免费工具同时喂Lucene指数
- (使用PHP) 使用PHP的NLP编程工具?
- (与Ruby) https://stackoverflow.com/questions/3776361/ruby-nlp-libraries
问题是非常开放的。 这就是说,而不是select一个,下面是一个比较取决于你想使用的语言(因为有两种语言都有好的库)。
python
在Python方面,您应该首先看看Python Natural Language Toolkit 。 正如他们在描述中所指出的那样,NLTK是构buildPython程序以处理人类语言数据的领先平台。 它提供了超过50个语料库和词汇资源(如WordNet)的简单易用的界面,以及用于分类,标记,词干,标记,分析和语义推理的一整套文本处理库。
还有一些优秀的代码,可以从Google的基于Python的Natural Language Toolkit项目中查找。 你可以在GitHub上find这个代码的链接。
Java的
首先要看的是斯坦福大学的自然语言处理组 。 所有分发的软件都是用Java编写的。 所有最近的发行都需要Oracle Java 6+或OpenJDK 7+。 分发包包括用于命令行调用的组件,jar文件,Java API和源代码。
Weka在很多机器学习环境(通用选项)中看到的另一个很好的select是Weka 。 Weka是用于数据挖掘任务的机器学习algorithm的集合。 algorithm可以直接应用于数据集,也可以从您自己的Java代码中调用。 Weka包含数据预处理,分类,回归,聚类,关联规则和可视化的工具。 它也非常适合开发新的机器学习scheme。