우선 word
워드 넷에서 synset
/concept
차이가있다. 여기
우리가 하나 개의 단어가 여러 의미를 가질 수 있습니다 (여러 개념 즉, 링크)를 참조하십시오 :
>>> from nltk.corpus import wordnet as wn
>>> car = 'car'
>>> auto = 'automobile'
>>> wn.synsets(auto)
[Synset('car.n.01'), Synset('automobile.v.01')]
>>> wn.synsets(car)
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]
그리고 '자동차'와 '자동차'같은 Synset('car.n.01')
에 그렇다면 참조 할 수 있습니다이 경우
, 그때 그들은 hypo/uppernym 관계가 없습니다.
lemma
이라는 개념이있어 복잡하게 만드는 부분이 있으므로 여기서는 건너 뜁니다.
단어를 비교하지 않고 synset을 비교하면 간단히 synset의 모든 hyponym을 찾아내어 다른 synset이 그 내부에서 발생하는지 확인할 수 있습니다.
당신이 일반 단어를 비교하는 경우는, How to get all the hyponyms of a word/synset in python nltk and wordnet?
는 아래의 synset을 비교하는 방법을 보여집니다. '자동차'와 '자동차'아래
>>> from nltk.corpus import wordnet as wn
>>>
>>> fruit = 'fruit'
>>> wn.synsets(fruit)
[Synset('fruit.n.01'), Synset('yield.n.03'), Synset('fruit.n.03'), Synset('fruit.v.01'), Synset('fruit.v.02')]
>>> wn.synsets(fruit)[0].definition()
u'the ripened reproductive body of a seed plant'
>>> fruit = wn.synsets(fruit)[0]
>>>
>>> apple = 'apple'
>>> wn.synsets(apple)
[Synset('apple.n.01'), Synset('apple.n.02')]
>>> wn.synsets(apple)[0].definition()
u'fruit with red or yellow or green skin and sweet to tart crisp whitish flesh'
>>> apple = wn.synsets(apple)[0]
>>>
에 대해 하나의 명사 synset 있기 때문에 예를 들어, 위해, 나는 '과일'과 '자동차'와 '자동차'보다 더 논리적이다 '사과'를 사용합니다 우리는 사과는 과일의 직접 hyponyms에없는 것을 볼 수 :이
>>> hypofruits = set([i for i in fruit.closure(lambda s:s.hyponyms())])
>>> apple in hypofruits
True
당신은 그것을 가지고 :
>>> fruit.hyponyms()
[Synset('accessory_fruit.n.01'), Synset('achene.n.01'), Synset('acorn.n.01'), Synset('aggregate_fruit.n.01'), Synset('berry.n.02'), Synset('buckthorn_berry.n.01'), Synset('buffalo_nut.n.01'), Synset('chokecherry.n.01'), Synset('cubeb.n.01'), Synset('drupe.n.01'), Synset('ear.n.05'), Synset('edible_fruit.n.01'), Synset('fruitlet.n.01'), Synset('gourd.n.02'), Synset('hagberry.n.01'), Synset('hip.n.05'), Synset('juniper_berry.n.01'), Synset('marasca.n.01'), Synset('may_apple.n.01'), Synset('olive.n.01'), Synset('pod.n.02'), Synset('pome.n.01'), Synset('prairie_gourd.n.01'), Synset('pyxidium.n.01'), Synset('quandong.n.02'), Synset('rowanberry.n.01'), Synset('schizocarp.n.01'), Synset('seed.n.01'), Synset('wild_cherry.n.01')]
>>>
>>> apple in fruit.hyponyms()
False
그래서 우리는 모든 hyponyms을 반복하고 사과 그들 중 하나에 있는지 여부를 확인해야합니다! 완성도를 위해서 :
>>> hyperapple = set([i for i in apple.closure(lambda s:s.hypernyms())])
>>> fruit in hyperapple
True
>>> hypoapple = set([i for i in apple.closure(lambda s:s.hyponyms())])
>>> fruit in hypoapple
False
>>> hyperfruit = set([i for i in fruit.closure(lambda s:s.hypernyms())])
>>> apple in hyperfruit
False
당신은 어떤 RDF 데이터에 대한 RDF 데이터 또는 링크를 제공하지 않은, 그리고 SPARQL은 RDF 쿼리 언어입니다, 그래서 우리는 정말 어떤 SPARQL 쿼리에 대해 아무것도 제안 할 수 없습니다. 관심있는 RDF 데이터가 있습니까? –