이 문제는 WordNet
문장이 의역 할을 사용할 수있는 경우. 많은 문법적/구문 적 구성 요소로 가능합니다.
- 먼저 토큰의 개별 의미를 얻고 구문의 문장을 구문 분석 : 당신은 시스템이 필요합니다.
- 그런 다음
- 그런 다음 몇 가지 문법 발전기와 문장을 재탕 (이 은유의 경우 특히) 복합 문장의 전체적인 의미를 이해합니다.
지금까지만해도 ACE 파서/생성기는 그와 비슷한 기능을 수행 할 수 있지만 시스템을 해킹하여 많은 의역 생성기로 사용할 수 있습니다. http://sweaglesw.org/linguistics/ace/
그래서 귀하의 질문에 대답하는
,
는 대안으로 문장을 바꿔하는 워드 넷을 사용할 수 있습니까? 슬프게도, WordNet은 은불입니다. 의역 작업에 의미 이상의 의미가 필요합니다.
문장 구조를 변경할 수없는 경우 WordNet을 사용하여 관련 동의어 만 바꿀 수 있습니까? 예 가능합니다. 어떤 동의어가 replace-able인지 파악하는 것은 어렵습니다 ... 그리고 당신은 또한 어떤 형태/문법 구성 요소가 필요할 것입니다.
먼저 당신이 단어에 여러 감각의 문제로 실행됩니다 :
from nltk.corpus import wordnet as wn
sent = "Obama met Putin the previous week"
for i in sent.split():
possible_senses = wn.synsets(i)
print i, len(possible_senses), possible_senses
[OUT] :
Obama 0 []
met 13 [Synset('meet.v.01'), Synset('meet.v.02'), Synset('converge.v.01'), Synset('meet.v.04'), Synset('meet.v.05'), Synset('meet.v.06'), Synset('meet.v.07'), Synset('meet.v.08'), Synset('meet.v.09'), Synset('meet.v.10'), Synset('meet.v.11'), Synset('suffer.v.10'), Synset('touch.v.05')]
Putin 1 [Synset('putin.n.01')]
the 0 []
previous 3 [Synset('previous.s.01'), Synset('former.s.03'), Synset('previous.s.03')]
week 3 [Synset('week.n.01'), Synset('workweek.n.01'), Synset('week.n.03')]
이 그럼 당신은 감각을 알고있는 경우에도 (의 첫 번째 감각을 가정 해 봅시다) 감각 당 여러 단어를 얻을 수 있으며 모든 단어를 문장에서 바꿀 수있는 것은 아닙니다. 또한, 그들은 표면 형태가 아닌
lemma
형태이다.동사는 기본 형태 (시제 단순한 존재)이며 명사) 단수로 있습니다
from nltk.corpus import wordnet as wn
sent = "Obama met Putin the previous week"
for i in sent.split():
possible_senses = wn.synsets(i)
if possible_senses:
print i, possible_senses[0].lemma_names
else:
print i
[출력] nltk 읽기와
Obama
met ['meet', 'run_into', 'encounter', 'run_across', 'come_across', 'see']
Putin ['Putin', 'Vladimir_Putin', 'Vladimir_Vladimirovich_Putin']
the
previous ['previous', 'old']
week ['week', 'hebdomad']
이 토론을 살펴보십시오. http://stackoverflow.com/q/21990004/3279460. –