Python выводит предложения из корпуса, содержащие слово - PullRequest
0 голосов
/ 01 ноября 2019

Меня просят напечатать предложения из корпуса, содержащего слово (слова) с наибольшим количеством различных тегов. Я уже получил 6 лучших слов с самыми разными тегами (5 тегов).

  1. Я не знаю, как получить слова без использования "len (cfd [key])> 4", потому чтоЯ пытался использовать функцию max (), но она не работает.
  2. Я хочу напечатать предложения, содержащие эти слова. Но он печатает все предложения, которые содержат неточные слова. Например, я просто хочу напечатать предложения, включающие только слово EXACT: «round», но код также распечатывает предложения, которые включают «вокруг» (потому что «round» является частью «вокруг»). Что мне нужно добавить?
import nltk
from nltk.probability import FreqDist
from nltk.probability import ConditionalFreqDist
from nltk.corpus import*
from nltk.book import*
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize

import string
import re
cfd = nltk.ConditionalFreqDist((word,tag) for (word, tag) in 
brown.tagged_words(tagset='universal'))
homographs = [(key, len(cfd[key])) for key in cfd.keys() if len(cfd[key])>4]
words = [key for key in cfd.keys() if len(cfd[key])>4]
print("Word(s) with the greatest number of distinct tags:", homographs)
print("List of sentences containing the word: ")
txt = brown.sents()
for sentence in txt:
    if list(set(words) & set(sentence)):
        result = "".join([" "+i if not i.startswith("'") and i not in string.punctuation else i for i in sentence]).strip()
        print(result)

Кто-нибудь может мне помочь, как решить эти проблемы? Спасибо за ваши усилия.

...