WordNet 3.0을 사용하고 있습니다. WordNet 계층 구조에서 두 synset 간의 의미 론적 관계를 어떻게 찾을 수 있는지 알고 싶습니다. 마찬가지로, 입력으로 두 단어를 주어진 그들 사이의 관계, 즉 그들이 동의어, hyponym - 상위어 등 여부를 찾고 싶습니다.WordNet에서 두 synset 간의 의미 관계를 찾는 방법
이것을 달성하기 위해 파이썬이나 펄 모듈이 있습니까?
WordNet 3.0을 사용하고 있습니다. WordNet 계층 구조에서 두 synset 간의 의미 론적 관계를 어떻게 찾을 수 있는지 알고 싶습니다. 마찬가지로, 입력으로 두 단어를 주어진 그들 사이의 관계, 즉 그들이 동의어, hyponym - 상위어 등 여부를 찾고 싶습니다.WordNet에서 두 synset 간의 의미 관계를 찾는 방법
이것을 달성하기 위해 파이썬이나 펄 모듈이 있습니까?
NLTK는 Python에서 가장 많이 사용되는 NLP 라이브러리입니다.
common_lemmas = len(set(house.lemma_names).intersection(set(station.lemma_names)))
: 그들은 동의어인지 발견에
taxonomy_distance = house.shortest_path_distance(station)
: 당신이 클래스 Synset의이 방법을 방법을 사용할 수 있습니다 다음
from nltk.corpus import wordnet
house = wordnet.synset('house.n.01')
station = wordnet.synset('station.n.01')
: 뭔가처럼 기술 된 작업이 될 것이다 두 집합에서 공통 표제어의 수를 반환합니다.
Neo4j와 같은 그래프 데이터베이스를 사용하여 wordnet 데이터 세트를로드하고 해당 노드 간의 최단 경로를 찾으면 문제가 here으로 표시됩니다.
'shortest_path_distance'에 오류가 발생합니다. 내 코드를 다시 검사 중입니다 ... –
파이썬 NLTK 사용 :
>>> from nltk.corpus import wordnet as wn
>>>
>>> synset1 = wn.synset('adornment.n.01')
>>> synset2 = wn.synset('jewelry.n.01')
>>>
>>> synset1.lowest_common_hypernyms(synset2)
[Synset('adornment.n.01')]
>>>
>>> synset1.hyponyms()
[Synset('frill.n.03'), Synset('rosette.n.01'), Synset('frontlet.n.01'), Synset('cordon.n.03'), Synset('fob.n.02'), Synset('beauty_spot.n.01'), Synset('sequin.n.01'), Synset('war_paint.n.01'), Synset('boutonniere.n.01'), Synset('trimming.n.02'), Synset('pendant.n.01'), Synset('pompon.n.01'), Synset('band.n.04'), Synset('bangle.n.02'), Synset('jewelry.n.01'), Synset('epaulet.n.01'), Synset('circlet.n.02'), Synset('frog.n.03'), Synset('tassel.n.01'), Synset('plume.n.02'), Synset('pectoral.n.02')]
>>> synset2.hypernyms()
[Synset('adornment.n.01')]
동의어를 얻으려면 :
>>> def lemmas_in_all_synsets(keyword):
... lemmas=[]
... for synset in wn.synsets(keyword):
... for lemma in synset.lemmas:
... lemmas.append(lemma)
... return lemmas
...
>>> lemmas_in_all_synsets('station')
[Lemma('station.n.01.station'), Lemma('place.n.10.place'), Lemma('place.n.10.sta
tion'), Lemma('station.n.03.station'), Lemma('post.n.01.post'), Lemma('post.n.01
.station'), Lemma('station.n.05.station'), Lemma('station.v.01.station'), Lemma(
'station.v.01.post'), Lemma('station.v.01.send'), Lemma('station.v.01.place')]
이것은 NLTK for Python 2.7에서 작동합니다. –
사용하는 라이브러리? 어떤 인간 언어인가? – Jacopofar
@Jackopo : 영어 – nish