텍스트 클러스터링 알고리즘


17

의미에 따라 많은 양의 문장을 그룹으로 묶는 데 문제가 있습니다. 이것은 문장이 많고 그 의미를 기준으로 그룹화하려는 경우의 문제와 유사합니다.

이를 위해 어떤 알고리즘이 제안됩니까? 나는 미리 많은 수의 클러스터를 알지 못하고 (더 많은 데이터가 나올수록 클러스터가 변경 될 수 있음) 각 문장을 나타내는 데 일반적으로 어떤 기능이 사용됩니까?

이제 단어 목록과 문장 사이의 거리를 다음과 같이 정의하여 가장 간단한 기능을 사용하려고합니다.

여기에 이미지 설명을 입력하십시오

(A와 B는 문장 A와 B의 해당 단어 세트입니다)

전혀 말이 되나요?

사전에 클러스터 수가 필요하지 않기 때문에 scikit 라이브러리에서이 거리까지 Mean-Shift 알고리즘 을 적용하려고합니다 .

누군가가 문제에 대한 더 나은 방법 / 접근법을 조언한다면, 나는이 주제를 처음 접했을 때 대단히 감사하겠습니다.

답변:


13

체크 스탠포드 NLP 그룹 의 오픈 소스 소프트웨어 ( http://www-nlp.stanford.edu/software 특히), 스탠포드 분류 ( http://www-nlp.stanford.edu/software/classifier.shtml ) . 이 소프트웨어는로 작성되어 Java사용자를 기쁘게하지만 다른 언어에 대한 바인딩도 있습니다. 참고 라이선스 - 당신이 상용 제품에 자신의 코드를 사용하려는 경우, 당신은 상용 라이센스를 취득해야합니다.

이 작업 등에 적합한 IMHO의 또 다른 흥미로운 오픈 소스 라이브러리 세트는 다양한 클러스터링을 구현 하는 클러스터링 라이브러리 를 포함하는 기계 학습 GraphLab ( http://select.cs.cmu.edu/code/graphlab )의 병렬 프레임 워크입니다. 알고리즘 ( http://select.cs.cmu.edu/code/graphlab/clustering.html ). 모델 을 구현 하므로 멀티 코어멀티 프로세서 병렬 처리를 지원하므로 대량의 데이터 (예 : 보유한 데이터 )에 특히 적합합니다 .MapReduce

다음 사항을 알고있을 가능성이 높지만, 만일을 위해 언급하겠습니다. 자연 언어 툴킷 (NLTK) 에 대한 Python( http://www.nltk.org는 ) 클러스터링 / 분류 / 분류 텍스트 모듈이 포함되어 있습니다. 의 관련 장 확인 NLTK Book: http://www.nltk.org/book/ch06.html를 .

최신 정보:

알고리즘 에 관해서는 scikit-learn이 주제 추출 예에 설명 된 것처럼 http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html 과 같이 대부분 의 알고리즘을 시도한 것 같습니다 . 그러나 NMF (Non-Negative Matrix Factorization)를 포함하여 다양한 클러스터링 알고리즘 을 구현하는 유용한 다른 라이브러리를 찾을 수 있습니다 . 이러한 라이브러리 중 하나는 파이썬 행렬 인수 분해 (PyMF) 의 홈 페이지에 https://code.google.com/p/pymf 에서 소스 코드 https://github.com/nils-werner/pymf . 파이썬 기반의 또 다른 흥미로운 라이브러리는 NIMFA입니다.다양한 NMF 알고리즘 을 구현 합니다 : http://nimfa.biolab.si . 여기서 설명하는 연구 논문은이다 NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . 여기에 그 문서에서 예제가있는 선물과 매우 유사 텍스트 처리 문제에 대한 해결책 주제 클러스터링 : http://nimfa.biolab.si/nimfa.examples.documents.html를 .


1
자세한 답변을 주셔서 감사합니다. 나는 당신의 모든 제안, 시도하고 테스트 할 많은 일을 겪을 것입니다! 또한 carrot2 도구가 텍스트 데이터의 감독되지 않은 클러스터링에서 실제로 훌륭한 일을하고 있음을 발견했습니다. 미래의 참조에 대한 링크를 게시 http://project.carrot2.org/를
맥심 Galushka

@MaximGalushka : 천만에요! 귀하의 연구 결과와 귀하가 궁극적으로 달성 할 진보에 대해 궁금합니다. 여기에 게시하거나 저에게 직접 연락하십시오.
Aleksandr Blekh 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.