Ruby의 자연어 처리
(대부분 트위터 앱의 경우) 문장 분석을하고 몇 가지 일반적인 특징을 추론하려고합니다. Ruby에 이런 종류의 자연어 처리 라이브러리가 있습니까?
마찬가지로 거기에 좋은 자연 언어 처리 라이브러리 하지만 루비. 나는 매우 일반적인 것을 선호하지만 어떤 단서라도 감사합니다!
Ruby Linguistics 에는 몇 가지 사항이 있으며 그로부터 몇 가지 링크가 있지만 아직 Python 용 NLTK 와 거의 비슷해 보이지는 않습니다 .
훌륭하고 성숙한 세 가지 NLP 패키지는 Stanford Core NLP , Open NLP 및 LingPipe 입니다. Stanford Core NLP 도구 (GPL 라이선스)와 OpenNLP 도구 (Apache 라이선스) 에 대한 Ruby 바인딩이 있습니다 .
좀 더 실험적인 측면 에서는 GPL에 따라 출시 된 텍스트 검색, 추출 및 주석 툴킷 (Treat)을 유지 관리합니다.이 툴킷 은 Ruby에 존재하는 거의 모든 NLP 관련 gem에 공통 API를 제공합니다. 다음 Treat의 기능 목록은 Ruby 1.9와 호환되는 안정적인 자연어 처리 젬 측면에서 좋은 참고 자료가 될 수 있습니다.
- 텍스트 segmenters 및 tokenizers (
punkt-segmenter,tactful_tokenizer,srx-english,scalpel) - 영어, 프랑스어 및 독일어 용 자연어 구문 분석기와 영어 용 명명 된 엔티티 추출 (
stanford-core-nlp). - 워드 활용 및 활용 (
linguistics), 형태소 (ruby-stemmer,uea-stemmer,lingua, 등) - 워드 넷 인터페이스 (
rwordnet), POS의 태거 (rbtagger,engtagger등) - 언어 (
whatlanguage), 날짜 / 시간 (chronic,kronic,nickel), 키워드 (lda-ruby) 추출. - 인덱싱 및 전체 텍스트 검색 (
ferret)을 사용한 텍스트 검색 . - 명명 된 엔티티 추출 (
stanford-core-nlp). - 의사 결정 트리 (
decisiontree), MLP (ruby-fann), SVM (rb-libsvm) 및 선형 분류 (tomz-liblinear-ruby-swig)를 사용한 기본 머신 러닝 . - 텍스트 유사성 메트릭 (
levenshtein-ffi,fuzzy-string-match,tf-idf-similarity).
Treat에 포함되어 있지 않지만 NLP와 관련이 있습니다 : hotwater (문자열 거리 알고리즘), yomu (.doc, .docx, .pages, .odt, .rtf, .pdf 읽기를위한 Apache Tiki의 바인더), graph-rank (구현 of GraphRank).
항상 jruby를 사용하고 자바 라이브러리를 사용할 수 있습니다.
편집 : jvm에서 기본적으로 루비를 수행하고 자바 라이브러리를 쉽게 활용할 수있는 기능은 루비리스트에게 큰 장점입니다. 이것은 이와 같은 상황에서 고려해야 할 좋은 옵션입니다.
Ruby의 일부 NLP 알고리즘을 자세히 설명하는 훌륭한 기사를 찾았 습니다 . 여기에는 형태소 분석기, 날짜 시간 구문 분석기 및 문법 구문 분석기가 포함됩니다.
TREAT – Text REtrieval and Annotation Toolkit – 내가 아는 Ruby 용 툴킷 중 가장 포괄적 인 툴킷입니다 : https://github.com/louismullie/treat/wiki/
또한 MonkeyLearn 과 같은 SaaS API 사용을 고려 하십시오 . 기계 학습으로 텍스트 분류기를 쉽게 훈련시키고 API를 통해 통합 할 수 있습니다. 있다 루비 SDK가 가능합니다.
고유 한 분류자를 만드는 것 외에도 감정 분석, 주제 분류, 언어 감지 등을 위해 미리 만들어진 모듈을 선택할 수 있습니다. 또한 키워드 추출 및 엔티티와 같은 추출기가 있으며 더 많은 공개 모듈을 계속 추가 할 것입니다.
기타 좋은 기능 :
- 알고리즘을 생성 / 테스트 할 수있는 GUI가 있습니다.
- 알고리즘은 클라우드 컴퓨팅 플랫폼에서 정말 빠르게 실행됩니다.
- Ruby 또는 다른 프로그래밍 언어와 통합 할 수 있습니다.
이걸로 해봐
https://github.com/louismullie/stanford-core-nlp
stanford-core-nlp gem 정보
이 gem은 영어, 프랑스어 및 독일어의 토큰 화, 문장 분할, 품사 태그 지정, 형식화 및 구문 분석을위한 일련의 자연어 처리 도구 인 Stanford Core NLP 패키지에 대한 고급 Ruby 바인딩을 제공합니다. 이 패키지는 또한 영어에 대한 명명 된 엔티티 인식 및 상호 참조 해결을 제공합니다.
http://nlp.stanford.edu/software/corenlp.shtml 데모 페이지 http://nlp.stanford.edu:8080/corenlp/
나는 GitHub 에서 Ruby Natural Language Processing 리소스 (라이브러리, API 및 프레젠테이션) 목록을 유지하며 여기에있는 다른 답변에 나열된 라이브러리와 일부 추가 라이브러리를 다룹니다.
이러한 "일반적인 특성"이 무엇인지 훨씬 더 구체적으로 설명해야합니다.
NLP에서 문장의 "일반적인 특성"은 정서 분석 (즉, 화자의 태도), 스피치 태깅의 기본 부분, 개인 대명사 사용, 문장에 능동 또는 수동 동사가 포함되어 있습니까? 동사의 시제와 목소리 ...
당신이 그것을 설명하는 것에 대해 모호하더라도 상관하지 않지만 우리가 당신이 무엇을 요구하는지 모른다면 우리는 당신을 도울 수있는 구체적 일 가능성이 매우 낮습니다.
특히 NLP에 대한 나의 일반적인 제안은 특정 언어로 제한하는 대신 작업에 가장 적합한 도구를 가져와야한다는 것입니다. 일반 도구가 모든 곳에서 구현되는 일부 작업에서는 특정 언어로 제한하는 것이 좋지만 NLP는 그중 하나가 아닙니다.
Twitter 작업의 또 다른 문제는 대부분의 NLP 도구가 훈련되지 않은 이상하고 멋진 방식으로 절반 정도 구워 지거나 압축 된 문장이 많다는 것입니다. 이를 돕기 위해 NUS SMS Corpus 는 "학생들이 수집 한 약 10,000 개의 SMS 메시지"로 구성됩니다. 유사한 제한 및 사용으로 인해이를 분석하면 Twitter로 탐색하는 데 도움이 될 수 있습니다.
좀 더 구체적인 경우 도움이 될 몇 가지 도구를 나열 해 보겠습니다.
Mark Watson의 무료 책 Practical Semantic Web and Linked Data Applications, Java, Scala, Clojure 및 JRuby Edition을 확인 합니다. 그는 java, clojure, ruby 및 scala를 사용하는 NLP에 대한 장을 가지고 있습니다. 또한 필요한 리소스에 대한 링크도 제공합니다.
이 옵션을 구현하기 위해 더 가볍고 간단한 것을 찾는 사람들에게 잘 맞았습니다.
https://github.com/yohasebe/engtagger
참고 URL : https://stackoverflow.com/questions/999410/natural-language-processing-in-ruby
'Program Club' 카테고리의 다른 글
| node-gyp 빌드 오류 창 x64 (0) | 2020.11.20 |
|---|---|
| SpringData JPA는 네이티브 쿼리 결과를 Non-Entity POJO에 매핑합니다. (0) | 2020.11.20 |
| 자바 스크립트가 헤드 태그에 있어야합니까? (0) | 2020.11.20 |
| Java 제네릭을 사용하여 열거 형 값 반복 (0) | 2020.11.20 |
| EBS 또는 S3에서 이미지를 유지해야합니까? (0) | 2020.11.20 |