Получить список всех слов, которые могут быть связаны с конкретным [дублированием]

В ответ на gs, вы должны проверить пароль на общие словарные слова (используя хэш, возможно). В противном случае слабый пароль, например «Желтый», будет оценен как сильный по вашей логике.

3
задан Mark Miller 23 July 2015 в 19:30
поделиться

1 ответ

Это решение требует предварительной обработки вашего корпуса. Но как только это будет сделано, это очень быстрый поиск в словарях.

from collections import defaultdict
from stemming.porter2 import stem

with open('/usr/share/dict/words') as f:
    words = f.read().splitlines()

stems = defaultdict(list)

for word in words:
    word_stem = stem(word)
    stems[word_stem].append(word)

if __name__ == '__main__':
    word = 'leukocyte'
    word_stem = stem(word)
    print(stems[word_stem])

Для корпуса /usr/share/dict/words это дает результат

['leukocyte', "leukocyte's", 'leukocytes']

Он использует модуль stemming , который может быть установлен с

pip install stemming
1
ответ дан BioGeek 16 August 2018 в 01:57
поделиться
  • 1
    Просто вернемся к этому. Запуск под Ubuntu 16.04.2, Python 2.7.12, это ничего не возвращает для «лейкоцита». Может быть, наши файлы слов разные? «Ревновать», «ревновать», «ревностно», «ревновать»). С «мышцей» получается [мышцы »,« мускулистые »,« мускулистые »), но не« мускулистые ». Поэтому я предполагаю, что это частичное решение. Может быть, я ожидаю слишком много обратного истощения, особенно с биомедицинскими терминами. Я могу получить множественные и прилагательные формы из uberon.github.io – Mark Miller 16 June 2017 в 18:04
Другие вопросы по тегам:

Похожие вопросы: