2015-01-19 3 views
6

입력 단어가 주어지면 명사인지 여부를 결정해야합니다 (예 : cook이 모호하거나 일치하지 않을 경우 단어를 식별해야 함). 명사로).단어가 명사인지 여부 확인

사실 저는 Stanford Parser의 POS tagger를 사용합니다. (저는 입력으로 한 단어 만주고 결과로부터 POS 태그만을 추출합니다). 결과는 꽤 좋지만 시간이 오래 걸립니다.

파이썬에서이 작업을 실제로 수행하는 방법이 있습니까?

+1

스탠포드 파서가 입력 (종속 구문 분석, 선거 구민 분석 ...) 다른 많은 것들을 수행, 그것은 시간의 낭비 이리. 또한, POS 태그를 너무 강하게하고 싶지 않습니다 (일반적으로 POS 태그는 한 문장이 아닌 전체 문장에서 수행됩니다). – permanganate

답변

5

한 단어를 명사로 사용할 수 있는지 여부를 간단하게 확인하려면 가장 빠른 방법은 모든 명사 집합을 작성한 다음 해당 집합의 구성원 단어를 확인하는 것입니다. 당신이 (예를 들어, NLTK를 통해 액세스 할 수 있습니다)에 WordNet 코퍼스 사용할 수있는 모든 명사의 목록

:

>>> from nltk.corpus import wordnet as wn 
>>> nouns = {x.name().split('.', 1)[0] for x in wn.all_synsets('n')} 
>>> "cook" in nouns 
True 
>>> "and" in nouns 
False 
+0

그것은 가능성, 감사합니다 :) nltk는 67176 명사를 제공합니다, 우리는 그들을 많이 잃지 않습니까 (다른 사전 사용)? (나는 당신이 당신의 코드에서'name' 다음에'()'을 잊었다 고 생각합니다) – permanganate

+0

당신이 맞을 수도 있습니다 : 얼마나 많은 영어 명사들이 있는지 모르겠습니다! WordNet의 기능을 확장하기 위해 다른 곳에서 더 큰 목록을 찾을 수 있습니다. ('.name'은 괄호없이 파이썬과 NLTK의 제 버전에서 단어에 접근하는 올바른 방법 인 것 같습니다.) –

+0

'name'은 함수이고, 코드는'nouns = {x. split ('.', 1) [0] [...]}' – Ponkadoodle

1

내가 파이썬 래퍼에 대해 말할 수 있지만, 당신은 스탠포드를 사용하는 경우 POS tagger 파서가 아닌 훨씬 빠릅니다. 여기에는 Stanford CoreNLP에 대한 래퍼가 있으며 여기에는 태그러가 포함됩니다. https://pypi.python.org/pypi/corenlp-python; 또는 nltk에는 스탠포드 (stanford) 태그 지정 모듈도 있습니다 (http://www.nltk.org/_modules/nltk/tag/stanford.html).

장난감 단어에 한 단어를 포함 시키면 더 좋은 결과를 얻을 수도 있습니다. "X는 일"과 같은 것입니다. 문장에 따라, 이것은 당신을 명상의 단어로 추측하거나 멀리 떨어 뜨릴 수 있습니다.