L'incorporation de mots est une technique permettant d'exprimer des mots sous forme de vecteurs de nombres réels de faible dimension (bien qu'il y ait environ 200 dimensions). Il se caractérise par sa capacité à associer des mots avec des significations similaires à des vecteurs proches, et en ajoutant et en soustrayant des vecteurs, un résultat significatif (par exemple, roi - homme + femmes = reine) peut être obtenu.
Les vecteurs d'incorporation de mots sont une technique importante utilisée dans diverses applications de traitement du langage naturel telles que le balisage de mots partiels, la recherche d'informations et les questions-réponses. Cependant, ** le travail à préparer est une tâche ardue **. Téléchargez une grande quantité de données, prétraitez-les, entraînez-les sur une longue période, voyez les résultats et ajustez les paramètres.
Donc ** il est plus facile d'utiliser un vecteur entraîné si vous voulez simplement l'utiliser **. Donc, j'ai choisi ceux qui peuvent être utilisés maintenant à partir de ces vecteurs d'incorporation de mots.
Les informations sur le vecteur intégré sont résumées dans le référentiel suivant, veuillez donc également les consulter. awesome-embedding-models
Word2Vec
Commentaire d'un mot | Inutile de dire que le vecteur pré-formé de Word2Vec. Si vous ne savez pas quoi utiliser, vous pouvez l'utiliser. |
---|---|
Années d'annonce | 2013 |
URL | https://code.google.com/archive/p/word2vec/ |
Des vecteurs formés multilingues, y compris le japonais, peuvent être obtenus à partir des liens ci-dessous:
GloVe
Commentaire d'un mot | GloVe dont Stanford est fier. Il prétend avoir de meilleures performances que Word2Vec. Nous avons appris un vecteur de mot qui peut être combiné avec un modèle de décomposition matricielle globale et un modèle de fenêtre contextuelle locale. |
---|---|
Années d'annonce | 2014 |
URL | http://nlp.stanford.edu/projects/glove/ |
fastText
Commentaire d'un mot | FastText créé par Mikolov, le génie qui a créé Word2Vec. Quoi qu'il en soit, l'apprentissage est rapide. Afin de considérer la morphologie, chaque mot est exprimé par la lettre ngram et leur expression vectorielle est apprise. |
---|---|
Années d'annonce | 2016 |
URL1 | Download Word Vectors |
URL2 | Download Word Vectors(NEologd) |
※ uniquement japonais
J'ai écrit ci-dessous, y compris comment l'utiliser. Le modèle entraîné de fastText a été publié
Dependency-Based Word Embeddings
Commentaire d'un mot | Vecteur d'incorporation de mots par Levy et al. En m'entraînant à l'utilisation des dépendances, je suis devenu plus fort dans les tâches syntaxiques. Cela peut être utile si vous souhaitez l'utiliser pour des tâches syntaxiques. |
---|---|
Années d'annonce | 2014 |
URL | https://levyomer.wordpress.com/2014/04/25/dependency-based-word-embeddings/ |
Meta-Embeddings
Commentaire d'un mot | Meta annoncé à l'ACL 2016-Embeddings. De meilleurs vecteurs en combinant des ensembles de vecteurs incorporés dans des mots avec différentes propriétés(meta embedding)A réussi à obtenir. L'avantage est que la couverture du vocabulaire peut être augmentée en combinant des ensembles de vecteurs. |
---|---|
Années d'annonce | 2016 |
URL | http://cistern.cis.lmu.de/meta-emb/ |
LexVec
Commentaire d'un mot | C'est également LexVec annoncé à ACL2016. La tâche de similarité de mots surpasse Word2Vec dans certains ensembles de notation. |
---|---|
Années d'annonce | 2016 |
URL | https://github.com/alexandres/lexvec |
J'écrirai comment lire le vecteur pré-entraîné de Word2Vec qui sera souvent utilisé.
C'est super facile à lire. Installez simplement gensim et écrivez le code suivant.
import gensim
# Load Google's pre-trained Word2Vec model.
model = gensim.models.KeyedVectors.load_word2vec_format('./GoogleNews-vectors-negative300.bin', binary=True)
Vous pouvez écrire le code suivant pour faire une évaluation. Notez que vous devez télécharger les données d'évaluation questions-words.txt avant d'exécuter.
import logging
import pprint
# for logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
# Load evaluation dataset of analogy task
model.accuracy('questions-words.txt')
# execute analogy task like king - man + woman = queen
pprint.pprint(model.most_similar(positive=['woman', 'king'], negative=['man']))
Lorsque vous exécutez le code écrit, les résultats d'évaluation suivants sont générés.
2017-01-20 09:29:11,767 : INFO : loading projection weights from ./GoogleNews-vectors-negative300.bin
2017-01-20 09:30:10,891 : INFO : loaded (3000000, 300) matrix from ./GoogleNews-vectors-negative300.bin
2017-01-20 09:30:10,994 : INFO : precomputing L2-norms of word weight vectors
2017-01-20 09:30:42,097 : INFO : capital-common-countries: 83.6% (423/506)
2017-01-20 09:30:49,899 : INFO : capital-world: 82.7% (1144/1383)
2017-01-20 09:30:50,795 : INFO : currency: 39.8% (51/128)
2017-01-20 09:31:03,579 : INFO : city-in-state: 74.6% (1739/2330)
2017-01-20 09:31:05,574 : INFO : family: 90.1% (308/342)
2017-01-20 09:31:09,928 : INFO : gram1-adjective-to-adverb: 32.3% (262/812)
2017-01-20 09:31:12,052 : INFO : gram2-opposite: 50.5% (192/380)
2017-01-20 09:31:19,719 : INFO : gram3-comparative: 91.9% (1224/1332)
2017-01-20 09:31:23,574 : INFO : gram4-superlative: 88.0% (618/702)
2017-01-20 09:31:28,210 : INFO : gram5-present-participle: 79.8% (694/870)
2017-01-20 09:31:35,082 : INFO : gram6-nationality-adjective: 97.1% (1193/1229)
2017-01-20 09:31:43,390 : INFO : gram7-past-tense: 66.5% (986/1482)
2017-01-20 09:31:49,136 : INFO : gram8-plural: 85.6% (849/992)
2017-01-20 09:31:53,394 : INFO : gram9-plural-verbs: 68.9% (484/702)
2017-01-20 09:31:53,396 : INFO : total: 77.1% (10167/13190)
[('queen', 0.7118192315101624),
('monarch', 0.6189674139022827),
('princess', 0.5902431011199951),
('crown_prince', 0.5499460697174072),
('prince', 0.5377321839332581),
('kings', 0.5236844420433044),
('Queen_Consort', 0.5235946178436279),
('queens', 0.5181134343147278),
('sultan', 0.5098593235015869),
('monarchy', 0.5087412595748901)]
En regardant ce résultat, nous pouvons voir que la précision totale est de ** 77,1% **.
À propos, les vecteurs de mots tels que GloVe peuvent être lus presque de la même manière.
Dans cet article, nous avons présenté quelques vecteurs pré-entraînés de vecteurs d'incorporation de mots. Sauf si vous avez un motif spécifique pour apprendre vous-même, nous vous recommandons d'utiliser ces vecteurs pré-entraînés.
Recommended Posts