Вручную добавляйте словосочетания в gensim фразер

Я занимаюсь моделированием тем для статей по лингвистике и использую Gensim Phrases для выявления часто встречающихся словосочетаний. Я хочу иметь возможность помечать такие термины, как «поддерживаю» и «это-расщелины», как одно слово, поскольку они представляют собой специфическую лингвистическую терминологию. Однако, если я создам модель Gensim после удаления стоп-слов, эти словосочетания не будут найдены (поскольку они содержат стоп-слова), если я создам модель после удаления стоп-слов (или стоп-слов, не включающих «это» или «делать»), это идентифицирует множество нерелевантных словосочетаний. Есть ли способ вручную добавить фразы, которые Gensim Phrases должны распознавать как словосочетания? Спасибо!


person Aleksandra    schedule 21.08.2017    source источник


Ответы (1)


Класс Phrases не имеет возможности добавлять желаемые биграммы. Его метод обычно не предполагает, что "стоп-слова" будут удалены перед обработкой.

Потенциально вы можете настроить поведение Phrases, попробовав разные значения 'threshold' и 'min_count'.

Если вы обнаружите, что некоторые настройки связывают нужные фразы, а также некоторые нежелательные фразы, которые по-прежнему соответствуют тем же статистическим порогам, возможно, это не так уж и плохо, несмотря на неинтуитивность некоторых фраз. Все эти статистические методы неточны и часто лучше всего оцениваются по их конечным результатам по количественным целям, а не по каким-либо случайным странностям/краеугольным случаям, обнаруженным в специальном обзоре.

Если вы хотите покопаться в коде, чтобы добавить возможность принудительно использовать определенные биграммы, это может быть проще с помощью служебного класса Phraser, также в модуле phrases.py gensim. За счет некоторых дополнительных предварительных вычислений он уменьшает данные Phrases до структуры меньшего размера, используя только биграммы, которые позже преодолеют пороговое значение комбинации. Таким образом, он экономит немного памяти и выполняет более поздние преобразования корпуса немного быстрее, но если вы сохраните только Phraser, вы потеряете возможность попробовать другие пороги / min_counts ниже того, что было использовано при его создании. Но потенциально вы могли бы добавить в его структуры дополнительные биграммы, выбранные вручную, после создания, это проще, чем вмешиваться в полную модель Phrases.

Обновление (апрель 2021 г.): Начиная с Gensim-4.0, класс Phraser был переименован в FrozenPhrases для лучшего отличия от учебного класса Phrases. Кроме того, предложение в проблеме проекта дает вероятно- эффективный способ «заставить» определенные биграммные фразы всегда продвигаться. Конкретно:

phrases = Phrases(…)  # do customary training/etc
frozen_phrases = phrases.freeze()  # freeze bigrams' scores for compactness/efficiency
frozen_phrases.phrasegrams['my_phrase'] = float('inf')  # set the desired phrase to infinite score
person gojomo    schedule 21.08.2017
comment
Привет @gojomo. Не могли бы вы сообщить мне, если знаете, как это исправить: использование для фильтрации n граммов"> stackoverflow.com/questions/47735393/ - person ; 10.12.2017