자연어 처리를위한 Java 또는 Python [닫기]


112

자연어 처리에 어떤 프로그래밍 언어가 더 나은지 알고 싶습니다. Java 또는 Python ? 이에 대해 많은 질문과 답변을 찾았습니다. 그러나 나는 사용할 것을 선택하는 데 여전히 길을 잃었습니다.

그리고 많은 라이브러리 (LingPipe, GATE, OpenNLP, StandfordNLP)가 있기 때문에 Java에 사용할 NLP 라이브러리를 알고 싶습니다. Python의 경우 대부분의 프로그래머는 NLTK를 권장합니다.

그러나 유용한 정보를 얻기 위해 구조화되지 않은 데이터 (자유로운 형식의 일반 영어 텍스트) 에서 텍스트 처리 또는 정보 추출을 수행 하려면 가장 좋은 옵션은 무엇입니까? 자바 또는 Python? 적합한 도서관?

업데이트 됨

내가하고 싶은 것은 비정형 데이터에서 유용한 제품 정보를 추출하는 것입니다 (예 : 사용자가 표준 영어가 아닌 모바일 또는 노트북에 대해 다양한 형태의 광고를 만듭니다).


47
나는 이런 종류의 질문이 여기에서 환영받지 못하는 것이 싫다. 성스러운 전쟁을 막는 것이 목적이라고 생각하지만, 이것이 콘텐츠 IMO에 기여합니다.
L0j1k

2
"주요 Java 및 Python NLP 라이브러리와 그 상대적인 장점은 무엇입니까?"라고 말하면 그게 해결 될까요? 대답은 시간이 지남에 따라 변하지 만 이와 같은 질문도 매우 유용합니다.
Scott Smith

5
나는 또한 이런 종류의 질문이 SO에서 환영 받았으면한다. 저는 최근에 Python과 R의 NLP 강점을 조사하려고했지만 즉시 중단되었습니다. 올바른 언어로 프로젝트를 구성하려는 사람들에게는 부에노가 아닙니다.
Ksofiac

답변:


133

NLP를위한 Java 대 Python은 매우 선호하거나 필요합니다. 회사 / 프로젝트에 따라 둘 중 하나를 사용해야하며 프로젝트를 진행하지 않는 한 선택의 여지가 많지 않습니다.

이외에 NLTK(www.nltk.org), 텍스트 처리에 대한 다른 라이브러리 사실이 있습니다 python:

(자세한 내용은 https://pypi.python.org/pypi?%3Aaction=search&term=natural+language+processing&submit=search 참조 )

의 경우 Java다른 목록이 많이 있지만 여기에 또 다른 목록이 있습니다.

이것은 기본 문자열 처리에 대한 좋은 비교입니다. 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의 기계 학습 라이브러리 :

(자세한 내용은 https://pypi.python.org/pypi?%3Aaction=search&term=machine+learning&submit=search 참조 )


NLP 의 최근 (2015) 딥 러닝 쓰나미 와 함께 다음을 고려할 수 있습니다. https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

비선호 적 / 중립성에서 딥 러닝 도구를 나열하지 않을 것입니다.


NLP / ML 도구를 요청한 기타 Stackoverflow 질문 :


1
NLP와 ML 도구에 대해 많은 정보를 제공 주셔서 감사합니다
진 링

42

질문은 매우 개방적입니다. 즉, 하나를 선택하는 대신 사용하려는 언어에 따라 비교 한 것입니다 (두 언어 모두에서 사용할 수있는 좋은 라이브러리가 있기 때문에).

파이썬

Python 측면에서 가장 먼저 살펴 봐야 할 곳은 Python Natural Language Toolkit 입니다. 설명에서 언급했듯이 NLTK는 인간 언어 데이터와 함께 작동하는 Python 프로그램을 빌드하기위한 선도적 인 플랫폼입니다. 분류, 토큰 화, 형태소 분석, 태깅, 구문 분석 및 의미 추론을위한 텍스트 처리 라이브러리 제품군과 함께 WordNet과 같은 50 개 이상의 말뭉치 및 어휘 리소스에 대한 사용하기 쉬운 인터페이스를 제공합니다.

Python을 기반으로하는 Google의 Natural Language Toolkit 프로젝트에서 비롯된 훌륭한 코드도 있습니다. GitHub 에서 해당 코드에 대한 링크를 찾을 수 있습니다 .

자바

가장 먼저 살펴볼 곳은 스탠포드의 자연어 처리 그룹 입니다. 배포되는 모든 소프트웨어는 Java로 작성됩니다. 모든 최신 배포에는 Oracle Java 6+ 또는 OpenJDK 7+가 필요합니다. 배포 패키지에는 명령 줄 호출, jar 파일, Java API 및 소스 코드를위한 구성 요소가 포함됩니다.

여기에있는 많은 머신 러닝 환경에서 볼 수있는 또 다른 훌륭한 옵션 (일반 옵션)은 Weka 입니다. Weka는 데이터 마이닝 작업을위한 기계 학습 알고리즘 모음입니다. 알고리즘은 데이터 세트에 직접 적용하거나 자체 Java 코드에서 호출 할 수 있습니다. Weka에는 데이터 사전 처리, 분류, 회귀, 클러스터링, 연관 규칙 및 시각화를위한 도구가 포함되어 있습니다. 또한 새로운 기계 학습 체계를 개발하는 데 적합합니다.


9
멋진 대답입니다. 나는 왜 이런 종류의 질문이 여기에서 내려다 보는지 이해하지 못한다. +1
L0j1k 2014

8
전적으로 동의합니다. 질문은 일반적입니다. 즉, 이것은 내가 자주 직면하는 질문의 유형이며, 특히 내가 지역에 처음 왔을 때 특히 그렇습니다.
Nathaniel Payne 2014

1
Java 기반 라이브러리 및 도구 측면에서 볼 수있는 또 다른 훌륭한 기능은 LingPipe입니다. alias-i.com/lingpipe
나다니엘 페인

2
@NathanielPayne : 제안 해 주셔서 감사합니다. NLP를 시작하기위한 가이드를 제공합니다.
Jin Ling
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.