Я использую word2ve c (и doc2ve c), чтобы получить вложения для предложений, но я хочу полностью игнорировать порядок слов. В настоящее время я использую gensim, но при необходимости могу использовать другие пакеты.
Например, мой текст выглядит так:
[
['apple', 'banana','carrot','dates', 'elderberry', ..., 'zucchini'],
['aluminium', 'brass','copper', ..., 'zinc'],
...
]
Я намеренно хочу, чтобы слово «яблоко» рассматривалось как близкое для «цуккини», как это для «банана», поэтому я установил размер окна очень большое число, скажем 1000. Я знаю 2 проблемы, которые могут возникнуть с этим.
Проблема 1: Окно может свернуть в начале предложения, создавая следующие обучающие пары: ('apple', ('banana')), ('apple', ('banana', 'carrot')), ('apple', ('banana', 'carrot', 'date'))
до того, как оно в итоге достигнет правильного ('apple', ('banana','carrot', ..., 'zucchini'))
. Казалось бы, это делает эффект «яблока» ближе к «банану», чем «цуккини», поскольку их гораздо больше пар, содержащих «яблоко» и «банан», чем пар, содержащих «яблоко» и «цуккини».
Проблема 2: я слышал, что выборки пар обратно пропорциональны расстоянию от целевого слова до слова контекста. Это также вызывает проблему, из-за которой соседние слова кажутся более связанными, чем мне бы хотелось.
Есть ли способ обойти проблемы 1 и 2? Должен ли я использовать cbow в отличие от sgns? Есть ли другие гиперпараметры, о которых мне следует знать? Как лучше всего go удалить / проигнорировать заказ в этом случае?
Спасибо