Поиск слов, которые полностью состоят из списка root слов - PullRequest
1 голос
/ 07 апреля 2020

Я новичок в кодировании в целом, и подумал, что сейчас самое время научить себя Python.

То, чего я сейчас пытаюсь достичь, - это определить список слов, которые полностью составленный из переменного набора root слов, слогов, префиксов и суффиксов, которые я выберу.

Вот где я до сих пор;

from nltk.corpus import words as english

vocab = set(w.lower() for w in english.words())

syllables = ('in', 'con', 'sis', 'tent', 'tant', 'si', 'ate', 'der', 'ing', 'a', 'c', 't')

syl_set=set(syllables)

for word in vocab:

    if all(x in syl_set for x in set(word)):

        print (word)

С при помощи установки NLTK с загруженным корпусом Words я могу выполнить поиск по списку слов Engli sh и вывести список слов, состоящих из отдельных букв в моем списке слогов (показан выше), например, cat , такт.

Однако при этом не выводятся слова, состоящие из строк, которые длиннее одной буквы, например, непротиворечивые, внимательные.

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

Спасибо, Маркус

1 Ответ

0 голосов
/ 07 апреля 2020

Ну, причина в том, что вы просто ищете отдельных персонажей. Посмотрите на эту часть: for x in set(word). Этот код перебирает все буквы в наборе всех символов, содержащихся в word.

Посмотрите на результат из

[x for x in set(word)]

, чтобы понять, что я имею в виду.

Решить это может быть сложно. Разбить слово на слоги сложнее, чем разбить его на символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...