Фразы дают другой вывод из фразера

#gensim

Вопрос:

Я пытаюсь генерировать биграммы и триграммы для моделирования темы LDA. Мой код приведен ниже;

 bigram = gensim.models.Phrases(data.normalized, min_count=5, threshold=5, 
                               connector_words=gensim.models.phrases.ENGLISH_CONNECTOR_WORDS)
bigram_mod = gensim.models.phrases.Phraser(bigram)

trigram = gensim.models.Phrases(bigram_mod[data.normalized], min_count=5, threshold=2)
trigram_mod = gensim.models.phrases.Phraser(trigram)
 

По какой-то причине, по крайней мере для одного образца из корпуса, выполнение trigram[sample] дает мне другой результат, чем выполнение trigram_mod[sample] . Насколько я понимаю trigram_mod , это замороженный фразер для trigram и наследует те же параметры.

Почему результат отличается?

Комментарии:

1. Насколько я могу судить, этого никогда не должно произойти. Вы можете создать самодостаточный пример, который демонстрирует влияние, либо, начиная от подготовки данных (некоторые сведения вы можете поделиться или, возможно, уже общественный данных), или начиная с .save() д экземпляр Phrases вы можете поделиться (что бы утечка слово/биграмм-частота данных из набора данных, но не полных текстов) показывает, что проблема с тестовым текстом?

2. Да, я тоже так думал. Я не имею права делиться своим набором данных, но если вы не возражаете, я мог бы отправить вам по электронной почте приглашение в частное хранилище GitHub, где я могу поделиться с вами модулем «маринованные фразы». Тебе это нравится?

3. В конечном итоге мы хотели бы получить что-то, что могло бы показать проблему, которой можно было бы поделиться в репозитории Github Gensim, любому, кто сможет провести расследование. Кроме того, в Phrases Gensim-4.0 есть множество рефакторингов функций, включая переименование Phraser в FrozenPhrases . Поэтому было бы полезно знать, может ли проблема все еще отображаться в последнем генсиме.

4. В этом случае я продолжу расследование и посмотрю, смогу ли я надежно воспроизвести проблему с помощью данных, которыми я могу поделиться. Тем временем я просто буду избегать использования модуля Фразера и напрямую использовать фразы.

5. Еще один способ копнуть глубже-изучить состояние Phrases amp; Phraser вокруг того, что биграм по-разному трактует trigram и trigram_mod . То есть сведите свой текст к минимальному примеру из 2 символов. Изучите статистику/пороговые значения в trigram amp; trigram_mod только для этих 2 токенов, чтобы выяснить, почему они проходят тест, который нужно объединить в один, а не в другой. (Это, скорее всего, прямо укажет на то, на каком этапе, либо при создании trigram_mod , либо после, возникает проблема.) Конечно, такой анализ более ценен, если в текущем Gensim-4.0 FrozenPhraser .