@sega111sega

Как определить уровень покрытия текста со словарем (сравнение двух списков)?

Добрый день!
Есть задача:
Необходимо определить уровень покрытия словаря (имеется csv файл) с текстом (любая статья).

import pandas
import pymorphy2
import re

excel_data_df = pandas.read_excel('Частотный словарь и семант ядро.xlsx', sheet_name='Лист1')

# print whole sheet data
lemma = (excel_data_df['lemma'].tolist())


low_lemma = [ name.lower() for name in lemma ]


morph = pymorphy2.MorphAnalyzer()


with open('text1.txt',  encoding='utf-8') as f:
    ls = [
        [morph.parse(word)[0].normal_form for word in re.findall(r'\w+', line)]
        for line in f
    ]

text = []
for i in ls:
    text += i


Сейчас на выходе я получаю два списка: словарь из scv и лемматизированный список из txt файла.
Мне нужно найти уникальные значения из текста, которые не входят в словарь.
Был близок к разгадке и использовал следующий код:

result=list(set(text) ^ set(lemma))

Но так не подходит. Т.к. в статье встречаются и другие слова, не входящие в словарь.
На выходе нужны только элементы списка с текстом, которых нет в словаре. Причем, что в словаре, что в тексте, могут быть одинаковые элементы. Вариант с множествами тоже не подошел. Подскажите, пожалуйста.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
@sega111sega Автор вопроса
Все же нашел ответ на свой вопрос:
import numpy as np

main_list = np.setdiff1d(text,dict, assume_unique=True)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы