2017-12-29 2 views
3

에서 같은 뿌리에서 파생 된 경우 나 함수 Trueword1word2이 같은 어근에서 파생 된 두 개의 영어 단어를 반환 same_base(word1, word2)을 쓰고 싶습니다 결정. 나는 단어가 여러 가지 감각을 가질 수 있다는 것을 알고있다. 알고리즘이 지나치게 복잡해지기를 원하면 가능하면 언제든지 True을 반환하고 같은 위치에서 나온 단어를 보려면을 참조하십시오. 일부 가양 성은 괜찮습니다. 위양성은 그렇지 않습니다.두 단어는 파이썬

일반적으로 스테 밍 및 lemmatization이 사용됩니다. 여기 제가 시도한 바가 있습니다 :

  • 예를 들어, Porter Stemmer를 사용하여 단어가 똑같은지 확인하십시오. 이것은 sungsing, 및 dug, medicationmedicine을 잡지 않습니다.
  • 단어가 동일한 것으로 lemmatize하는지 확인하십시오. 구별 기 (lemmatizer)에 전달할 인수가 무엇인지 (즉, 부분적으로는) 명확하지 않습니다. WordNet lemmatizer는 적어도 너무 보수적 인 것 같습니다.

이러한 도구가 있습니까? 나는 극도로 공격적인 줄기/표제 콤보가 필요합니까? 그렇다면 어디에서 찾을 수 있습니까?

+0

lemmatiser의 두 번째 인수로 POS 태그를 전달할 수 있습니다. 그것은 사물을 향상시킵니다. –

+0

감사합니다! 나는 연설의 어떤 부분을 넣을 지 고민하고 있었다. 연설의 각 부분을 살펴보고 두 단어가 같은 것으로 lemmatize하는지 확인해 볼 수 있습니까? 심지어 이것에도 문제가 있습니다. 예를 들어, "사랑스럽게"나는 어떤 부분의 연설에 관계없이 "사랑"으로 lemmatized되지 않습니다. –

+0

그것은 제가 두려워하는 도전입니다 :-( –

답변

1

설명 된대로 일반 작업은 입력 문자를 텍스트로 간단하게 분석 할 수 없습니다. 영어는 진화 할 때 단어를 처리하는 일관된 규칙을 가지고 있지 않습니다. 그렇습니다. 훌륭한 lemmatiser는 여러분에게 직설적 인 경우를 해결할 것입니다. 그 경우, 불규칙 동사와 같은 POS에서 공통적 인 변환을 적용하여 식별 할 수 있습니다.

그러나 위양성을 없애기 위해서는 단어의 기초를 완전히 다뤄야합니다. 완비은 특히 어근이 영어가 아니거나 어쩌면 단축 된 단어 자체에 나타나지 않는 경우 어원을 요구할 것입니다.

예를 들어, 어떤 소프트웨어 도구 disspeculum이 같은 루트 (specere)를 가지고 있음을 말해하지만 species은하지 않는 것이 있을까? gentle, gentile, genteeljaunty의 루트가 같은 것을 어떻게 알 수 있습니까? 실제 연결의 100 %를 얻으려면 어원학이 필요합니다.