Поиск подходящих существительных с использованием NLTK WordNet

Есть ли способ найти правильные имена, используя NLTK WordNet? Т.е. могу ли я пометить принадлежащих существительных с помощью nltk Wordnet?

  • Как узнать, существует ли слово на английском языке, используя nltk
  • Python NLTK Лемматизация слова «дальше» с wordnet
  • Как получить синтаксис WordNet с учетом идентификатора смещения?
  • используя python nltk, чтобы найти сходство между двумя веб-страницами?
  • Общий синоним и часть обработки речи с использованием nltk
  • Установка данных nltk в скрипт setup.py
  • Как проверить, является ли слово английским словом с Python?
  • Использование WordNet для определения семантического сходства между двумя текстами?
  • 2 Solutions collect form web for “Поиск подходящих существительных с использованием NLTK WordNet”

    Я не думаю, что вам нужна WordNet для поиска правильных существительных, я предлагаю использовать теггер pos_tag Part-Of-Speech.

    Чтобы найти Существительные существительные, найдите тег NNP :

     from nltk.tag import pos_tag sentence = "Michael Jackson likes to eat at McDonalds" tagged_sent = pos_tag(sentence.split()) # [('Michael', 'NNP'), ('Jackson', 'NNP'), ('likes', 'VBZ'), ('to', 'TO'), ('eat', 'VB'), ('at', 'IN'), ('McDonalds', 'NNP')] propernouns = [word for word,pos in tagged_sent if pos == 'NNP'] # ['Michael','Jackson', 'McDonalds'] 

    Вы не можете быть очень довольны, так как Michael и Jackson разделены на 2 жетона, тогда вам может понадобиться нечто более сложное, например Tagger Entity.

    По penntreebank говоря, как penntreebank тегах для penntreebank, для притяжательных существительных вы можете просто искать тег POS , http://www.mozart-oz.org/mogul/doc/lager/brill-tagger/penn.html . Но часто теггер не помещает POS когда это NNP .

    Чтобы найти Принадлежащих Сущностей, найдите str.endswith («s») или str.endswith («s»):

     from nltk.tag import pos_tag sentence = "Michael Jackson took Daniel Jackson's hamburger and Agnes' fries" tagged_sent = pos_tag(sentence.split()) # [('Michael', 'NNP'), ('Jackson', 'NNP'), ('took', 'VBD'), ('Daniel', 'NNP'), ("Jackson's", 'NNP'), ('hamburger', 'NN'), ('and', 'CC'), ("Agnes'", 'NNP'), ('fries', 'NNS')] possessives = [word for word in sentence if word.endswith("'s") or word.endswith("s'")] # ["Jackson's", "Agnes'"] 

    В качестве альтернативы вы можете использовать NLTK ne_chunk но, похоже, он не делает ничего другого, если вы не обеспокоены тем, какое из них вы получаете от предложения:

     >>> from nltk.tree import Tree; from nltk.chunk import ne_chunk >>> [chunk for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)] [Tree('PERSON', [('Michael', 'NNP')]), Tree('PERSON', [('Jackson', 'NNP')]), Tree('PERSON', [('Daniel', 'NNP')])] >>> [i[0] for i in list(chain(*[chunk.leaves() for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]))] ['Michael', 'Jackson', 'Daniel'] 

    Использование ne_chunk немного многословно, и оно не дает вам владельцев.

    Я думаю, что вам нужен теггер , тегатор части речи. Этот инструмент назначает тег части речи (например, собственное имя существительное, местоимение и т. Д.) Каждому слову в предложении.

    NLTK включает в себя некоторые метки: http://nltk.org/book/ch05.html

    Также есть Стэнфордский частичный речевой указатель (с открытым исходным кодом, более высокая производительность).

    Python - лучший язык программирования в мире.