어느 형태소 분석기 또는 lemmatizer는 greatest
에서 당신을 얻을 수 있습니다 ->great
:
>>> from nltk.stem import WordNetLemmatizer
>>> from nltk.stem import WordNetLemmatizer, PorterStemmer
>>> porter = PorterStemmer()
>>> wnl = WordNetLemmatizer()
>>> greatest = 'greatest'
>>> porter.stem(greatest)
u'greatest'
>>> wnl.lemmatize(greatest)
'greatest'
>>> greater = 'greater'
>>> wnl.lemmatize(greater)
'greater'
>>> porter.stem(greater)
u'greater'
을하지만 greatest -> great
에서 얻을 수있는 PennTreeBank 태그 세트의 일부 좋은 속성을 사용할 수있다처럼 보인다 :
>>> from nltk import pos_tag
>>> pos_tag(['greatest'])
[('greatest', 'JJS')]
>>> pos_tag(['greater'])
[('greater', 'JJR')]
>>> pos_tag(['great'])
[('great', 'JJ')]
미친 규칙 기반 시스템을 사용해 보겠습니다. greatest
부터 시작합니다.
>>> import re
>>> word1 = 'greatest'
>>> re.sub('est$', '', word1)
'great'
>>> re.sub('est$', 'er', word1)
'greater'
>>> pos_tag([re.sub('est$', '', word1)])[0][1]
'JJ'
>>> pos_tag([re.sub('est$', 'er', word1)])[0][1]
'JJR'
>>> word1
'greatest'
이제 우리는 우리 자신의 최상급 줄기/lemmatizer/tail_substituter를 만들 수 있다는 것을 알게되었으므로 한 단어가 최상위 POS 태그를 제공하고 우리의 줄을 때 JJ를주고 변환 할 때 JJ를 제공하는 규칙을 작성합시다. 우리는 안전하게 단어의 비교 및 기본 형식은 쉽게 우리의 tail_substituter
으로 입수 할 수 있다고 할 수 있습니다
>>> if pos_tag([word1])[0][1] == 'JJS' \
... and pos_tag([re.sub('est$', '', word1)])[0][1] == 'JJ' \
... and pos_tag([re.sub('est$', 'er', word1)])[0][1] == 'JJR':
... comparative = re.sub('est$', 'er', word1)
... adjective = re.sub('est$', '', word1)
...
>>> adjective
'great'
>>> comparative
'greater'
지금 그 greatest -> greater -> great
에서 당신을 가져옵니다. great -> best
에서 이상한 일종입니다. 어휘 적으로 그들은 의미 론적 관계가 관련되어 보이지만 관련이 없습니다.
그래서 내가 그것을
great -> best
이
Lemmatize는, 줄기하지 않는 유효한 변환이라고 말할 주관적인 것 같아요. 또한, 당신은 "어떤 테이블 ... 감각?" –
중대한 것에서 중대한 것까지 아마 품사에 의해 수교 될 수있다 tagger JJ, JJR, JJS를 여기에서보십시오 https://gate.ac.s/sale/tao/splitap7.html#x39-802000G. 정말 멀리 가져온 제안으로 단어 삽입을 살펴볼 수 있습니다. https://code.google.com/p/word2vec/ 닫기 단어는 동의어가 아니지만 모델을 조정하고 올바른 데이터를 학습하면 동의어가 생성 될 수 있습니다 . 또는 시소러스 결과와 단어 클러스터 간의 교차점을 가져 오십시오. – Yasen