Incorporações do Word2Vec com TF-IDF

11

Ao treinar o modelo word2vec (usando, por exemplo, gensim), você fornece uma lista de palavras / frases. Mas não parece haver uma maneira de especificar pesos para as palavras calculadas, por exemplo, usando TF-IDF.

A prática usual é multiplicar a incorporação de vetores de palavras com o peso associado ao TF-IDF? Ou o word2vec pode tirar proveito disso de alguma maneira organicamente?

SFD
fonte

Respostas:

9

Os algoritmos do Word2Vec (Skip Gram e CBOW) tratam cada palavra da mesma forma, porque têm como objetivo calcular a incorporação de palavras . A distinção se torna importante quando é preciso trabalhar com frases ou incorporar documentos : nem todas as palavras representam igualmente o significado de uma frase específica. E aqui são aplicadas diferentes estratégias de ponderação, o TF-IDF é uma delas e, de acordo com alguns documentos, é bastante bem-sucedido. A partir desta pergunta do StackOverflow :

Neste trabalho, os tweets foram modelados usando três tipos de representação de texto. O primeiro é um modelo de saco de palavras ponderado por tf-idf (frequência do termo - frequência inversa do documento) (Seção 2.1.1). O segundo representa uma sentença calculando a média da incorporação de palavras de todas as palavras (na sentença) e o terceiro representa uma sentença calculando a média da incorporação de palavras ponderada de todas as palavras, o peso de uma palavra é dado por tf-idf (Seção 2.1.2 )

Máxima
fonte
2

Treine um tfidfvectorizer com seu corpus e use o seguinte código:

tfidf = Tfidfvectorizer () dict(zip(tfidf.get_feature_names(), tfidf.idf_)))

Agora você tem um dicionário com palavras como suas chaves e pesos como os valores correspondentes.

Deixe-me saber se funcionou.

Aayush Shrivastav
fonte
Sim. Obrigado pela ajuda.
Tanveer