Вопрос или проблема
Я генерирую биграмы с помощью from gensim.models.phrases
, которые буду использовать далее с TF-IDF и/или gensim.LDA
from gensim.models.phrases import Phrases, Phraser
# 7k документов, ~500-1k токенов каждый. Уже выполнена очистка, стоп-слова, лемматизация и т.д.
docs = get_docs()
phrases = Phrases(docs)
bigram = Phraser(phrases)
docs = [bigram[d] for d in docs]
Phrases
имеет min_count=5
, threshold=10
. Я не совсем понимаю, как они взаимодействуют, кажется, что они связаны? В любом случае, я вижу, что threshold
имеет значения в разных учебниках, варьирующиеся от 1 до 1000, описываемые как важные для определения количества сгенерированных биграм. Я не могу найти объяснение, как подобрать адекватное значение для своих целей, просто “пробуй и то, что лучше всего подойдет”. Есть ли какая-то интуиция/формула для выбора этого значения, может быть, что-то вроде “если вы хотите добавить x% токенов в ваш словарь, используйте y”; или “если размер вашего корпуса x, попробуйте y”? Я также вижу, что scoring='default'
может быть установлено на 'npmi'
вместо этого. Из ссылки на статью говорится, что и t - это выбранный порог, обычно около 10e−5
. Могло бы это стать адекватным подходом, если я просто хочу, чтобы это работало “достаточно хорошо”, не прибегая к большому количеству настроек? То есть, phrases = Phrases(docs, scoring='npmi', threshold=10e-5)
.
Кратко: есть ли простой или интуитивный способ выбрать адекватное threshold
(например, основываясь на размере корпуса); в противном случае, будет ли scoring='npmi',threshold=10e-5
проще?
Поскольку min_count
и threshold
являются гиперпараметрами, более лучшие значения могут быть найдены через кросс-валидацию. Оцените ряд значений, чтобы эмпирически найти значения, которые показывают наилучшие результаты на валидационном наборе.
Ответ или решение
Как выбрать порог для генерации биграмм с помощью gensim Phrases
При работе с моделью Phrases из библиотеки gensim для генерации биграмм возникает важный вопрос: как правильно выбрать значения для параметров min_count
и threshold
. Это критически важно для улучшения качества обработки текстов, особенно если вы планируете использовать новые биграммы в дальнейшей обработке, например, в подходах TF-IDF или LDA.
Параметры min_count
и threshold
: Объяснение их взаимодействия
-
min_count: Этот параметр определяет минимальное количество раз, которое биграмма должна встречаться в корпусе текстов, чтобы быть отобранной в финальный список. Установка min_count, например, на 5, означает, что биграммы, появляющиеся менее чем в пяти документах, будут игнорироваться. Это помогает отфильтровывать редкие комбинации слов, которые могут не иметь значимого контекста.
-
threshold: Этот параметр влияет на то, насколько "сильной" должна быть связь между словами в биграмме, чтобы она была принята. Чем выше значение
threshold
, тем более специфическими будут выбранные биграммы. Если значениеthreshold
слишком низкое, вы можете получить большое количество биграмм, даже те, которые не являются полезными для вашего анализа.
Выбор порога threshold
Выбор значения для threshold
зависит от нескольких факторов, таких как размер вашего корпуса и общая длина текстов. В качестве интуитивного подхода можно рассмотреть следующие рекомендации:
-
Малый размер корпуса (менее 1000 документов): Рекомендуется выбрать значение threshold в диапазоне от 5 до 15. В этом случае вы хотите отобрать более распространенные и значимые биграммы.
-
Средний размер корпуса (1000-5000 документов): Значения threshold могут варьироваться от 10 до 30. При таком объеме данных вы можете позволить себе больше вариативности, сохраняя при этом качество.
-
Большой размер корпуса (более 5000 документов): Соответственно, значения threshold могут быть более высокими (от 20 до 50). Это позволит исключить шумовые биграммы и оставить только наиболее значимые.
-
Тестирование и настройки: Пусть будет ваша практика провести кросс-валидацию с различными значениями
threshold
, чтобы оценить, какие параметры работают лучше всего для ваших задач. Это наиболее надежный способ определить, какие параметры лучше всего соответствуют вашим данным.
Применение альтернативы: Параметры scoring
и threshold
Использование scoring='npmi'
с порогом threshold=10e-5
— это также хороший подход, особенно если вы хотите найти разумное решение без значительных усилий. NPMI (нормализованная взаимная информация) считается эффективным методом оценки связи между словами в биграмме.
Для того чтобы это работало «достаточно хорошо», вам не нужно слишком углубляться в опытный анализ. Тем не менее, не забывайте о важности интерпретации результатов. Если выбрасываемые биграммы не соответствуют вашим ожиданиям, попробуйте снова настраивать параметры.
Заключение
Выбор значения для параметров min_count
и threshold
в gensim Phrases требует внимательного подхода и тестирования. Однако следуя предложенным вами рекомендациям и применяя кросс-валидацию, вы сможете достичь лучших результатов в вашей задаче по анализу текстов. Не забывайте, что основная цель — получить более качественное представление о ваших данных для дальнейшего анализа с использованием TF-IDF или LDA.
Если вы систематически оцениваете параметры, основанные на размере вашего корпуса и контексте ваших данных, выбор оптимальных значений станет проще и более интуитивным с течением времени.