Ответы пользователя по тегу Обработка естественного языка
  • Возможна ли проверка наличия слова в Python по первым буквам?

    drygdryg
    @drygdryg
    Python-разработчик
    Можно сначала разбить предложение на токены, затем отбросить окончания всех искомых слов и токенов предложения посредством стемминга, и в конечном счёте пересечь полученные множества слов. Для этого можно применить NLTK:
    from nltk.tokenize import word_tokenize
    from nltk.stem import SnowballStemmer
    
    # Список искомых слов
    word_list = ['шалаши', 'инжир']
    # Предложение для поиска
    sentence = 'В шалаше шуршит шелками желтый дервиш из Алжира и, жонглируя ножами, штуку кушает инжира.'
    
    # Разделить предложение на отдельные слова — токены
    tokens = word_tokenize(sentence, language='russian')
    
    snowball = SnowballStemmer(language='russian')
    # Отбросить окончания слов предложения и слов из списка, после чего пересечь множества
    stems_found = set(map(snowball.stem, tokens)) & set(map(snowball.stem, word_list))
    
    print(stems_found)

    Результат выполнения:
    {'инжир', 'шалаш'}

    Если вам будет недостаточно стемминга, то примените лемматизацию. Лемматизация для русского языка есть в pymorhpy2.
    Ответ написан
    4 комментария