2013-02-13 2 views
7

파이썬은 방대한 텍스트 및 코퍼스 자원과 함께 다양한 텍스트 마이닝 및 처리 방법을 제공합니다. 가능한 일치를 위해 전달하는 의미에 따라 문장을 비교할 수있는 방법이 있습니까? 즉, 지능형 문장 일치 자입니까? 예를 들어문장의 의미에 따라 비교

, giggling at bad jokesI like to laugh myself silly at poor jokes 같은 문장. 둘 다 같은 의미를 전달하지만 문장은 원격으로 일치하지 않습니다 (단어가 다르면 Levenstein Distance이 나쁘게 실패합니다!).

이제 here과 같은 기능을 제공하는 API가 있다고 가정 해 보겠습니다. 그래서이를 기반으로 우리는 gigglelaugh이라는 단어가 전달하는 의미와 일치한다는 것을 알 수있는 메커니즘을 가지고 있습니다. 그들이 joke 같은 단어의 맥락에서 일치처럼 bad joke이기 때문에, (Badpoor에 일치하지 않습니다, 그래서 우리는 더 레이어를 추가해야 할 수 있습니다 일반적으로 같은, poor jokebad person 있지만,poor person와 같지 않습니다!).

중요한 도전은 문장의 의미를 크게 바꾸지 않는 내용을 버리는 것입니다. 그래서, 알고리즘이 첫 문장이 사이 matchness 동일한 수준 반환해야합니다 : 그 사용할 수에 따라서 I like to laugh myself silly at poor jokes, even though they are completely senseless, full of crap and serious chances of heart-attack!

을 아직 잉태되어 그 같은 어떤 알고리즘이있다? 아니면 바퀴를 발명해야합니까?

+0

나는 이것을 몇 주 전에 들여다 보았다. 나는 NLTK의 전문가는 아니지만 휠을 발명하거나 NLTK 위에 구축 된 퍼지 매칭을 찾아야한다고 생각합니다. 해결책을 찾지 못했지만 거기에 뭔가있는 것으로 의심됩니다. 테스트 준비를위한 질문을 검토하기 위해 자유 형식 텍스트 응답의 자동 채점을 가능하게하려고했습니다. 아무것도 찾으면 업데이트를 게시하십시오. – jimhark

+0

그래, 뭐. 그럴거야. 그래프 기반 알고리즘을 생각하고있었습니다. – SexyBeast

+0

열렬히 하향 투표하거나 투표 마감하기 전에, 적어도 설명을하십시오. 익명으로 아무도 아무 것도 할 수 없기 때문에 높은 손으로 굴지 말라. – SexyBeast

답변

4

좀 더 고급 주제 모델링 알고리즘과 물론 모델을 훈련하는 일부 코퍼가 필요합니다. 그러면 낄낄 웃음과 웃음 같이 쉽게 동의어를 처리 할 수 ​​있습니다! http://radimrehurek.com/gensim/ 내가 그것을 사용한 적이 있지만, LSA/LSI, 임의 투사 심지어 LDA와 같은 고전적인 의미 벡터 공간의 방법을 포함

파이썬에서,이 패키지를 시도 할 수 있습니다.

개인적인 선호도는 랜덤 프로젝션입니다. 왜냐하면 더 빠르고 더 효율적이기 때문입니다 (저는 다른 라이브러리로 자바에서이 작업을하고 있습니다).

관련 문제