Какие меры НЛП я должен использовать, чтобы сравнить важность / центральность определенных терминов в разных документах?
Какие НЛП (обработка естественного языка) я могу использовать для измерения важности и центральности различных слов в тексте или коллекции текстов?
Пример: предположим, у меня есть два корпуса, содержащие судебные заключения. Корпус А содержит мнения, в которых суд признает производителя ответственным за небрежное изготовление продукта. Корпус B содержит мнения с аналогичными фактами, но достигающие другого результата. Какие меры могут быть использованы, что позволило бы мне сказать, что определенные термины являются более "важными" или "центральными" для случаев в корпусе A, чем для случаев в корпусе B?
Что я пробовал: - Частота необработанных слов - TF-IDF
Я знаю, что есть еще много (например, из теории графов), но я не уверен, с чего начать и имеет ограниченный опыт. Буду признателен за любые предложения или объяснения того, какие разные меры используются, и за / против каждого. FWIW, я использую NTLK и также немного знаком со Spacy.
Справочная информация: я планирую статью об академическом праве, в которой постараюсь объяснить, почему аналогичные дела по определенной теме решаются по-разному в двух разных юрисдикциях. Моя гипотеза: разные термины чаще встречаются в каждом наборе случаев и имеют ключевое значение. Например, случаи в наборе A могут использовать термин "намерение" больше, чем аналогичные случаи в наборе B, показывая, что первый набор случаев больше сфокусирован на этой концепции.
0 ответов
Относительно вашего вопроса, как "измерить важность и центральность различных слов в тексте": в библиотеке textacy есть несколько алгоритмов для легкого извлечения ключевых терминов. Текущий современный алгоритм для этой задачи кажется YAKE, и у textacy есть простая в использовании реализация для него. Обратите внимание, что textacy строится поверх spacy, поэтому он будет работать примерно так:
from textacy.ke import yake
import spacy
import wikipedia
nlp = spacy.load("en_core_web_sm")
text = wikipedia.page("Emmanuel Macron").content # some string to extract key terms from
doc = nlp(text)
keywords = yake(doc, normalize="lemma", include_pos=["NOUN", "PROPN", "ADJ"], window_size=5, topn=10)
Что касается вашей конечной цели "объяснить, почему похожие дела [тексты] по определенной теме решаются по-разному в двух разных юрисдикциях": я не уверен, что извлечение ключевых слов поможет вам в этом. Если я правильно понимаю, у вас есть два корпуса: корпус A с группой текста с известным результатом X и корпус B с известным результатом Y. Вы можете применить извлечение ключевых слов к обоим корпусам по отдельности, но это просто вернет слова, которые являются наиболее важными для соответствующий корпус. Он не скажет вам, какие ключевые слова являются наиболее эксклюзивными для корпуса A по сравнению с корпусом B. (Возможно, вы сможете качественно интерпретировать ключевые слова и получить некоторое понимание качественно)
Альтернативой может быть тематическое моделирование. Тематическая модель сообщает вам, какие слова наиболее эксклюзивны для одной темы по сравнению с другой (тема определяется как группа слов, которые часто встречаются вместе в текстах и между ними). Вы можете объединить два корпуса A и B, запустить моделирование тем в объединенном корпусе и надеяться, что есть определенные темы (словосочетания), которые коррелируют с результатом X или Y. Лучшей библиотекой в Python для моделирования тем является Gensim (но я Я менее знаком с ним, и у меня сложилось впечатление, что библиотеки моделирования тем в R более обширны, чем в Python).