version chinoise détaillée gensim du module FastText (traduction de documents officiels)

citation

Comme nous le savons tous, au cours de l'analyse de similarité de texte, nous pouvons utiliser pour construire gensim dans le mot de vecteur word2vec pour décrire la relation vectorielle entre les mots afin d'obtenir le calcul de similarité. Mais word2vec a beaucoup de limites, qui est, le modèle ne peut pas être déduit vecteur des mots inconnus. Si cette limite que vous avez chargé à la force, puis vérifier le modèle FastText (site officiel le dit).

 

Quand utiliser FastText 

Le principal principe derrière cela est FastText, la structure lexicale des mots véhiculent des informations importantes sur le sens du mot, et le mot incorporé traditionnel ne tient pas compte de cette information, le mot traditionnel intégreront un mot unique pour chaque mot de formation intégré. Ceci est particulièrement important pour les riches sous forme de langue (allemand, turc), dans la langue, un seul mot peut avoir un grand nombre de formes morphologiques, chaque forme de forme se produit rarement, il est difficile de former un bon mot embarqué.

FastText tentative de son fils considéré chaque jeu de mot des mots pour résoudre ce problème. Par souci de simplicité et est indépendante de la langue, le mot sera traité comme caractère sous-mot n-gramme (n yuans). Vector est simplement un mot qui est une composition dans laquelle la somme de tous les vecteurs de la figure.

Selon cette note comparaison détaillée Word2Vec et FastText, par rapport à la performance Word2Vec, FastText original sur la tâche de grammaire beaucoup mieux, surtout dans le cas du corpus de formation plus petite. Sémantiquement tâche, la performance Word2Vec légèrement mieux que FastText. Avec l'augmentation de la taille du corpus de formation, la différence devient de plus en plus petit.

le temps de formation FastText est beaucoup plus longue que la version Word2Vec Gensim ( 15min 42s VS  6min 42s ON de text8, jetons MIL. 17, époques. 5, A et taille Vector 100).

S'il y a au moins un caractère dans les données de formation, il peut se résumer par sa partie vectorielle du caractère de la composition, pour obtenir le vocabulaire étranger vecteur (MHV) mots.

 

entraîneur

Pour l'exemple suivant, nous utiliserons LeeCorpus (si vous avez installé gensim) pour former notre modèle.

from pprint import pprint as print
from gensim.models.fasttext import FastText as FT_gensim
from gensim.test.utils import datapath

# Set file names for train and test data
corpus_file = datapath('lee_background.cor')

model = FT_gensim(size=100)

# build the vocabulary
model.build_vocab(corpus_file=corpus_file)

# train the model
model.train(
    corpus_file=corpus_file, epochs=model.epochs,
    total_examples=model.corpus_count, total_words=model.corpus_total_words
)

print(model)
Out:

<gensim.models.fasttext.FastText object at 0x21adc12b0>

 

formation hyperparam'etre

Modèle de formation pour les paramètres super word2vec suivent le même schéma. d'origine FastText word2vec soutenir les paramètres suivants:

  1. Modèle: Training Architecture (valeurs autorisées :. cbow, skipgram (par défaut) cbow
  2. taille: la taille de l'embarqué à apprendre (par défaut 100)
  3. alpha: taux d'apprentissage initial (par défaut 0,025)
  4. Fenêtre: le contexte taille de la fenêtre (par défaut 5)
  5. min_count: le nombre de fois plus petit qu'une certaine valeur semble ignorer les mots (par défaut 5)
  6. perte: objectifs de formation (valeurs autorisées :. ns, hs, Softmax (ns par défaut)
  7. échantillon: échantillon valeur de seuil de fréquence de mot (par défaut 0,001)
  8. négatif: un nombre négatif de mots à échantillonner, pour ns (par défaut 5)
  9. iter: nombre d'époques (par défaut 5)
  10. sorted_vocab: par ordre décroissant de fréquence de mots (par défaut 1)
  11. fils: le nombre de fils à utiliser (par défaut 12)

En outre, FastText il y a trois paramètres supplémentaires:

  1. min_n: char ngrams longueur minimale (par défaut 3)
  2. max_n: char ngrams longueur maximale (par défaut 6)
  3. seau: le nombre de seaux pour les ngrams de hachage (par défaut 200 000

paramètres Min_n pour contrôler la longueur de chaque mot et max_n décomposées pour trouver le caractère intégré et la formation du caractère de la figure. Si max_n ensemble à 0, ou moins que le min_n, ngrams caractère n'est pas utilisé, le modèle simplifié est effectivement Word2Vec.

Pour limiter le modèle de formation de la mémoire requise, en utilisant une fonction de hachage qui met en correspondance un nombre entier de 1 à k ngrams au. Pour les séquences de caractères hachés, en utilisant  Fowler-Noll-Vo de la fonction de hachage  (FNV-Variant. 1A) 

 

Note: Comme Word2Vec, peut continuer la formation de votre modèle en utilisant Gensim de FastText mis en œuvre localement.

 

Enregistrer / Charger un modèle

Le modèle peut être chargé ou stocké par la charge et sauvegarde des méthodes.

# saving a model trained via Gensim's fastText implementation
import tempfile
import os
with tempfile.NamedTemporaryFile(prefix='saved_model_gensim-', delete=False) as tmp:
    model.save(tmp.name, separately=[])

loaded_model = FT_gensim.load(tmp.name)
print(loaded_model)

os.unlink(tmp.name)
Out:

<gensim.models.fasttext.FastText object at 0x248365dd8>

méthode save_word2vec_method conduira à la perte de vecteur ngram. Ainsi, le modèle chargé de cette façon apparaîtra comme un modèle word2vec ordinaire.

 

Trouver un vecteur de mot

Note: Comme le vecteur de similarité de mots recherche et d'interrogation de telles opérations peut être effectuée exactement de la même manière. Donc, ici, nous utilisons uniquement FastText local pour atteindre.

FastText modèle à vecteur de support mot de recherche par mot de résumé à ces personnages appartiennent mot ngram .

print('night' in model.wv.vocab)
Out:

True

 

print('nights' in model.wv.vocab)
Out:

False

 

 

print(model['night'])
Out:

array([ 0.09290078,  0.00179044, -0.5732425 ,  0.47277036,  0.59876233,
       -0.31260246, -0.18675974, -0.03937651,  0.42742983,  0.3419642 ,
       -0.6347907 , -0.01129783, -0.6731092 ,  0.40949872,  0.27855358,
       -0.0675667 , -0.19392972,  0.17853093,  0.24443033, -0.37596267,
       -0.23575999,  0.27301458, -0.36870447,  0.02350322, -0.8377813 ,
        0.7330566 ,  0.11465224,  0.17489424,  0.4105659 ,  0.00782498,
       -0.6537432 ,  0.23468146,  0.0849599 , -0.4827836 ,  0.46601945,
        0.10883024, -0.16093193, -0.0672544 ,  0.4203116 ,  0.21155815,
       -0.00366337, -0.0748013 ,  0.3834724 , -0.06503348,  0.12586932,
        0.1853084 , -0.1237317 ,  0.20932904, -0.01647663, -0.3908304 ,
       -0.5708807 , -0.5556746 ,  0.06411647,  0.0105149 ,  0.3988393 ,
       -0.8015626 , -0.1093765 , -0.18021879,  0.01527423, -0.03230731,
        0.21715961, -0.12600328, -0.48359045, -0.10510948, -0.5346136 ,
        0.34130558,  0.00175925,  0.15395461,  0.03269634,  0.4691867 ,
       -0.5634196 , -0.51715475, -0.01452069, -0.11632308, -0.33402348,
        0.03678156,  0.2714943 ,  0.11561721, -0.13655168,  0.18497233,
        0.44912726,  0.05588026, -0.16958544,  0.4569073 , -0.38961336,
       -0.25632814,  0.11925202,  0.29190361,  0.3145572 ,  0.28840527,
       -0.1761603 ,  0.11538666, -0.03718378, -0.19138913, -0.2689859 ,
        0.55656165,  0.28513685,  0.44856617,  0.5552184 ,  0.46507034],
      dtype=float32)

 

 

print(model['nights'])
Out:

array([ 0.08160479,  0.00211581, -0.49826992,  0.41022694,  0.5195688 ,
       -0.27314973, -0.1630029 , -0.03343058,  0.3712295 ,  0.29791382,
       -0.55389863, -0.01124268, -0.5853901 ,  0.35737413,  0.2381446 ,
       -0.05847026, -0.17071408,  0.15347946,  0.21084373, -0.32725066,
       -0.20492734,  0.23824975, -0.3212196 ,  0.02110198, -0.728978  ,
        0.6370283 ,  0.09962698,  0.15249957,  0.35706517,  0.00637152,
       -0.5662229 ,  0.20523196,  0.07256062, -0.4219087 ,  0.40503132,
        0.09435709, -0.13849337, -0.05977419,  0.36544353,  0.1847734 ,
       -0.00228304, -0.06519727,  0.33295807, -0.05484347,  0.10837447,
        0.16139933, -0.11116385,  0.18381876, -0.01496008, -0.33843184,
       -0.49896452, -0.48239845,  0.05691842,  0.01010948,  0.3474576 ,
       -0.69720525, -0.09521793, -0.15558553,  0.01095809, -0.02779314,
        0.18840933, -0.11044046, -0.42034045, -0.09200079, -0.46539423,
        0.29623416,  0.00164192,  0.1337628 ,  0.0301894 ,  0.40878546,
       -0.48996508, -0.4493049 , -0.01268086, -0.10204876, -0.2902913 ,
        0.03117974,  0.23619917,  0.10075174, -0.11683178,  0.1600669 ,
        0.39141724,  0.04842569, -0.14833327,  0.39648855, -0.33779994,
       -0.22229995,  0.10574951,  0.25514117,  0.2729022 ,  0.25152075,
       -0.15353616,  0.10010949, -0.03372021, -0.1661839 , -0.2337282 ,
        0.484296  ,  0.24699508,  0.38859773,  0.48236763,  0.40448022],
      dtype=float32)

en fonctionnement avec l'original word2vec légèrement différent. Il teste un vecteur mot donné existe plutôt que le mot existe dans le vocabulaire anglais.

mot de test existe dans le vocabulaire:

print("word" in model.wv.vocab)
Out:

False

 

Test s'il est un vecteur de mot:

print("word" in model)
Out:

True

 

opération de similarité

 opération de similarité fonctionne de la même que le fonctionnement du word2vec. Parole en dehors du vocabulaire peut également être utilisé, tant que les données de formation ont au moins un caractère ngram.

print("nights" in model.wv.vocab)
Out:

False

 

print("night" in model.wv.vocab)
Out:

True

 

print(model.similarity("night", "nights"))
Out:

0.9999927

Dans le modèle FastText, des mots similaires syntaxe ont généralement une forte similitude, car une grande quantité de réunion char-ngram sera le même. Par conséquent, FastText font généralement mieux que word2vec tâche syntaxiquement. Ici fournit une comparaison détaillée .

 

opération Autre similitude

print(model.most_similar("nights"))
Out:

[('Arafat', 0.9982752203941345),
 ('study', 0.9982697367668152),
 ('"That', 0.9982694983482361),
 ('boat', 0.9982693791389465),
 ('Arafat,', 0.9982683062553406),
 ('Endeavour', 0.9982543587684631),
 ('often', 0.9982521533966064),
 ("Arafat's", 0.9982460737228394),
 ('details', 0.9982452392578125),
 ('north.', 0.9982450008392334)]

 

print(model.n_similarity(['sushi', 'shop'], ['japanese', 'restaurant']))
Out:

0.99995166

 

 

print(model.doesnt_match("breakfast cereal dinner lunch".split()))
Out:

/Volumes/work/workspace/gensim_misha/gensim/models/keyedvectors.py:877: FutureWarning: arrays to stack must be passed as a "sequence" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.
  vectors = vstack(self.word_vec(word, use_norm=True) for word in used_words).astype(REAL)
'breakfast'

 

 

print(model.most_similar(positive=['baghdad', 'england'], negative=['london']))
Out:

[('1', 0.2434064894914627),
 ('40', 0.23903147876262665),
 ('2', 0.2356666624546051),
 ('20', 0.2340335100889206),
 ('26', 0.23390895128250122),
 ('blaze', 0.23327460885047913),
 ('UN', 0.2332388311624527),
 ('keep', 0.23248346149921417),
 ('As', 0.2321406602859497),
 ('...', 0.23206500709056854)]

 

print(model.accuracy(questions=datapath('questions-words.txt')))

 

Out:

[{'correct': [], 'incorrect': [], 'section': 'capital-common-countries'},
 {'correct': [], 'incorrect': [], 'section': 'capital-world'},
 {'correct': [], 'incorrect': [], 'section': 'currency'},
 {'correct': [], 'incorrect': [], 'section': 'city-in-state'},
 {'correct': [],
  'incorrect': [('HE', 'SHE', 'HIS', 'HER'), ('HIS', 'HER', 'HE', 'SHE')],
  'section': 'family'},
 {'correct': [], 'incorrect': [], 'section': 'gram1-adjective-to-adverb'},
 {'correct': [], 'incorrect': [], 'section': 'gram2-opposite'},
 {'correct': [('GOOD', 'BETTER', 'GREAT', 'GREATER'),
              ('GREAT', 'GREATER', 'LOW', 'LOWER'),
              ('LONG', 'LONGER', 'GREAT', 'GREATER')],
  'incorrect': [('GOOD', 'BETTER', 'LONG', 'LONGER'),
                ('GOOD', 'BETTER', 'LOW', 'LOWER'),
                ('GREAT', 'GREATER', 'LONG', 'LONGER'),
                ('GREAT', 'GREATER', 'GOOD', 'BETTER'),
                ('LONG', 'LONGER', 'LOW', 'LOWER'),
                ('LONG', 'LONGER', 'GOOD', 'BETTER'),
                ('LOW', 'LOWER', 'GOOD', 'BETTER'),
                ('LOW', 'LOWER', 'GREAT', 'GREATER'),
                ('LOW', 'LOWER', 'LONG', 'LONGER')],
  'section': 'gram3-comparative'},
 {'correct': [('GREAT', 'GREATEST', 'LARGE', 'LARGEST')],
  'incorrect': [('BIG', 'BIGGEST', 'GOOD', 'BEST'),
                ('BIG', 'BIGGEST', 'GREAT', 'GREATEST'),
                ('BIG', 'BIGGEST', 'LARGE', 'LARGEST'),
                ('GOOD', 'BEST', 'GREAT', 'GREATEST'),
                ('GOOD', 'BEST', 'LARGE', 'LARGEST'),
                ('GOOD', 'BEST', 'BIG', 'BIGGEST'),
                ('GREAT', 'GREATEST', 'BIG', 'BIGGEST'),
                ('GREAT', 'GREATEST', 'GOOD', 'BEST'),
                ('LARGE', 'LARGEST', 'BIG', 'BIGGEST'),
                ('LARGE', 'LARGEST', 'GOOD', 'BEST'),
                ('LARGE', 'LARGEST', 'GREAT', 'GREATEST')],
  'section': 'gram4-superlative'},
 {'correct': [('GO', 'GOING', 'PLAY', 'PLAYING'),
              ('PLAY', 'PLAYING', 'SAY', 'SAYING'),
              ('PLAY', 'PLAYING', 'LOOK', 'LOOKING'),
              ('SAY', 'SAYING', 'LOOK', 'LOOKING'),
              ('SAY', 'SAYING', 'PLAY', 'PLAYING')],
  'incorrect': [('GO', 'GOING', 'LOOK', 'LOOKING'),
                ('GO', 'GOING', 'RUN', 'RUNNING'),
                ('GO', 'GOING', 'SAY', 'SAYING'),
                ('LOOK', 'LOOKING', 'PLAY', 'PLAYING'),
                ('LOOK', 'LOOKING', 'RUN', 'RUNNING'),
                ('LOOK', 'LOOKING', 'SAY', 'SAYING'),
                ('LOOK', 'LOOKING', 'GO', 'GOING'),
                ('PLAY', 'PLAYING', 'RUN', 'RUNNING'),
                ('PLAY', 'PLAYING', 'GO', 'GOING'),
                ('RUN', 'RUNNING', 'SAY', 'SAYING'),
                ('RUN', 'RUNNING', 'GO', 'GOING'),
                ('RUN', 'RUNNING', 'LOOK', 'LOOKING'),
                ('RUN', 'RUNNING', 'PLAY', 'PLAYING'),
                ('SAY', 'SAYING', 'GO', 'GOING'),
                ('SAY', 'SAYING', 'RUN', 'RUNNING')],
  'section': 'gram5-present-participle'},
 {'correct': [('AUSTRALIA', 'AUSTRALIAN', 'INDIA', 'INDIAN'),
              ('AUSTRALIA', 'AUSTRALIAN', 'ISRAEL', 'ISRAELI'),
              ('FRANCE', 'FRENCH', 'INDIA', 'INDIAN'),
              ('FRANCE', 'FRENCH', 'ISRAEL', 'ISRAELI'),
              ('INDIA', 'INDIAN', 'ISRAEL', 'ISRAELI'),
              ('INDIA', 'INDIAN', 'AUSTRALIA', 'AUSTRALIAN'),
              ('ISRAEL', 'ISRAELI', 'INDIA', 'INDIAN'),
              ('SWITZERLAND', 'SWISS', 'INDIA', 'INDIAN')],
  'incorrect': [('AUSTRALIA', 'AUSTRALIAN', 'FRANCE', 'FRENCH'),
                ('AUSTRALIA', 'AUSTRALIAN', 'SWITZERLAND', 'SWISS'),
                ('FRANCE', 'FRENCH', 'SWITZERLAND', 'SWISS'),
                ('FRANCE', 'FRENCH', 'AUSTRALIA', 'AUSTRALIAN'),
                ('INDIA', 'INDIAN', 'SWITZERLAND', 'SWISS'),
                ('INDIA', 'INDIAN', 'FRANCE', 'FRENCH'),
                ('ISRAEL', 'ISRAELI', 'SWITZERLAND', 'SWISS'),
                ('ISRAEL', 'ISRAELI', 'AUSTRALIA', 'AUSTRALIAN'),
                ('ISRAEL', 'ISRAELI', 'FRANCE', 'FRENCH'),
                ('SWITZERLAND', 'SWISS', 'AUSTRALIA', 'AUSTRALIAN'),
                ('SWITZERLAND', 'SWISS', 'FRANCE', 'FRENCH'),
                ('SWITZERLAND', 'SWISS', 'ISRAEL', 'ISRAELI')],
  'section': 'gram6-nationality-adjective'},
 {'correct': [('PAYING', 'PAID', 'SAYING', 'SAID')],
  'incorrect': [('GOING', 'WENT', 'PAYING', 'PAID'),
                ('GOING', 'WENT', 'PLAYING', 'PLAYED'),
                ('GOING', 'WENT', 'SAYING', 'SAID'),
                ('GOING', 'WENT', 'TAKING', 'TOOK'),
                ('PAYING', 'PAID', 'PLAYING', 'PLAYED'),
                ('PAYING', 'PAID', 'TAKING', 'TOOK'),
                ('PAYING', 'PAID', 'GOING', 'WENT'),
                ('PLAYING', 'PLAYED', 'SAYING', 'SAID'),
                ('PLAYING', 'PLAYED', 'TAKING', 'TOOK'),
                ('PLAYING', 'PLAYED', 'GOING', 'WENT'),
                ('PLAYING', 'PLAYED', 'PAYING', 'PAID'),
                ('SAYING', 'SAID', 'TAKING', 'TOOK'),
                ('SAYING', 'SAID', 'GOING', 'WENT'),
                ('SAYING', 'SAID', 'PAYING', 'PAID'),
                ('SAYING', 'SAID', 'PLAYING', 'PLAYED'),
                ('TAKING', 'TOOK', 'GOING', 'WENT'),
                ('TAKING', 'TOOK', 'PAYING', 'PAID'),
                ('TAKING', 'TOOK', 'PLAYING', 'PLAYED'),
                ('TAKING', 'TOOK', 'SAYING', 'SAID')],
  'section': 'gram7-past-tense'},
 {'correct': [('MAN', 'MEN', 'CHILD', 'CHILDREN')],
  'incorrect': [('BUILDING', 'BUILDINGS', 'CAR', 'CARS'),
                ('BUILDING', 'BUILDINGS', 'CHILD', 'CHILDREN'),
                ('BUILDING', 'BUILDINGS', 'MAN', 'MEN'),
                ('CAR', 'CARS', 'CHILD', 'CHILDREN'),
                ('CAR', 'CARS', 'MAN', 'MEN'),
                ('CAR', 'CARS', 'BUILDING', 'BUILDINGS'),
                ('CHILD', 'CHILDREN', 'MAN', 'MEN'),
                ('CHILD', 'CHILDREN', 'BUILDING', 'BUILDINGS'),
                ('CHILD', 'CHILDREN', 'CAR', 'CARS'),
                ('MAN', 'MEN', 'BUILDING', 'BUILDINGS'),
                ('MAN', 'MEN', 'CAR', 'CARS')],
  'section': 'gram8-plural'},
 {'correct': [], 'incorrect': [], 'section': 'gram9-plural-verbs'},
 {'correct': [('GOOD', 'BETTER', 'GREAT', 'GREATER'),
              ('GREAT', 'GREATER', 'LOW', 'LOWER'),
              ('LONG', 'LONGER', 'GREAT', 'GREATER'),
              ('GREAT', 'GREATEST', 'LARGE', 'LARGEST'),
              ('GO', 'GOING', 'PLAY', 'PLAYING'),
              ('PLAY', 'PLAYING', 'SAY', 'SAYING'),
              ('PLAY', 'PLAYING', 'LOOK', 'LOOKING'),
              ('SAY', 'SAYING', 'LOOK', 'LOOKING'),
              ('SAY', 'SAYING', 'PLAY', 'PLAYING'),
              ('AUSTRALIA', 'AUSTRALIAN', 'INDIA', 'INDIAN'),
              ('AUSTRALIA', 'AUSTRALIAN', 'ISRAEL', 'ISRAELI'),
              ('FRANCE', 'FRENCH', 'INDIA', 'INDIAN'),
              ('FRANCE', 'FRENCH', 'ISRAEL', 'ISRAELI'),
              ('INDIA', 'INDIAN', 'ISRAEL', 'ISRAELI'),
              ('INDIA', 'INDIAN', 'AUSTRALIA', 'AUSTRALIAN'),
              ('ISRAEL', 'ISRAELI', 'INDIA', 'INDIAN'),
              ('SWITZERLAND', 'SWISS', 'INDIA', 'INDIAN'),
              ('PAYING', 'PAID', 'SAYING', 'SAID'),
              ('MAN', 'MEN', 'CHILD', 'CHILDREN')],
  'incorrect': [('HE', 'SHE', 'HIS', 'HER'),
                ('HIS', 'HER', 'HE', 'SHE'),
                ('GOOD', 'BETTER', 'LONG', 'LONGER'),
                ('GOOD', 'BETTER', 'LOW', 'LOWER'),
                ('GREAT', 'GREATER', 'LONG', 'LONGER'),
                ('GREAT', 'GREATER', 'GOOD', 'BETTER'),
                ('LONG', 'LONGER', 'LOW', 'LOWER'),
                ('LONG', 'LONGER', 'GOOD', 'BETTER'),
                ('LOW', 'LOWER', 'GOOD', 'BETTER'),
                ('LOW', 'LOWER', 'GREAT', 'GREATER'),
                ('LOW', 'LOWER', 'LONG', 'LONGER'),
                ('BIG', 'BIGGEST', 'GOOD', 'BEST'),
                ('BIG', 'BIGGEST', 'GREAT', 'GREATEST'),
                ('BIG', 'BIGGEST', 'LARGE', 'LARGEST'),
                ('GOOD', 'BEST', 'GREAT', 'GREATEST'),
                ('GOOD', 'BEST', 'LARGE', 'LARGEST'),
                ('GOOD', 'BEST', 'BIG', 'BIGGEST'),
                ('GREAT', 'GREATEST', 'BIG', 'BIGGEST'),
                ('GREAT', 'GREATEST', 'GOOD', 'BEST'),
                ('LARGE', 'LARGEST', 'BIG', 'BIGGEST'),
                ('LARGE', 'LARGEST', 'GOOD', 'BEST'),
                ('LARGE', 'LARGEST', 'GREAT', 'GREATEST'),
                ('GO', 'GOING', 'LOOK', 'LOOKING'),
                ('GO', 'GOING', 'RUN', 'RUNNING'),
                ('GO', 'GOING', 'SAY', 'SAYING'),
                ('LOOK', 'LOOKING', 'PLAY', 'PLAYING'),
                ('LOOK', 'LOOKING', 'RUN', 'RUNNING'),
                ('LOOK', 'LOOKING', 'SAY', 'SAYING'),
                ('LOOK', 'LOOKING', 'GO', 'GOING'),
                ('PLAY', 'PLAYING', 'RUN', 'RUNNING'),
                ('PLAY', 'PLAYING', 'GO', 'GOING'),
                ('RUN', 'RUNNING', 'SAY', 'SAYING'),
                ('RUN', 'RUNNING', 'GO', 'GOING'),
                ('RUN', 'RUNNING', 'LOOK', 'LOOKING'),
                ('RUN', 'RUNNING', 'PLAY', 'PLAYING'),
                ('SAY', 'SAYING', 'GO', 'GOING'),
                ('SAY', 'SAYING', 'RUN', 'RUNNING'),
                ('AUSTRALIA', 'AUSTRALIAN', 'FRANCE', 'FRENCH'),
                ('AUSTRALIA', 'AUSTRALIAN', 'SWITZERLAND', 'SWISS'),
                ('FRANCE', 'FRENCH', 'SWITZERLAND', 'SWISS'),
                ('FRANCE', 'FRENCH', 'AUSTRALIA', 'AUSTRALIAN'),
                ('INDIA', 'INDIAN', 'SWITZERLAND', 'SWISS'),
                ('INDIA', 'INDIAN', 'FRANCE', 'FRENCH'),
                ('ISRAEL', 'ISRAELI', 'SWITZERLAND', 'SWISS'),
                ('ISRAEL', 'ISRAELI', 'AUSTRALIA', 'AUSTRALIAN'),
                ('ISRAEL', 'ISRAELI', 'FRANCE', 'FRENCH'),
                ('SWITZERLAND', 'SWISS', 'AUSTRALIA', 'AUSTRALIAN'),
                ('SWITZERLAND', 'SWISS', 'FRANCE', 'FRENCH'),
                ('SWITZERLAND', 'SWISS', 'ISRAEL', 'ISRAELI'),
                ('GOING', 'WENT', 'PAYING', 'PAID'),
                ('GOING', 'WENT', 'PLAYING', 'PLAYED'),
                ('GOING', 'WENT', 'SAYING', 'SAID'),
                ('GOING', 'WENT', 'TAKING', 'TOOK'),
                ('PAYING', 'PAID', 'PLAYING', 'PLAYED'),
                ('PAYING', 'PAID', 'TAKING', 'TOOK'),
                ('PAYING', 'PAID', 'GOING', 'WENT'),
                ('PLAYING', 'PLAYED', 'SAYING', 'SAID'),
                ('PLAYING', 'PLAYED', 'TAKING', 'TOOK'),
                ('PLAYING', 'PLAYED', 'GOING', 'WENT'),
                ('PLAYING', 'PLAYED', 'PAYING', 'PAID'),
                ('SAYING', 'SAID', 'TAKING', 'TOOK'),
                ('SAYING', 'SAID', 'GOING', 'WENT'),
                ('SAYING', 'SAID', 'PAYING', 'PAID'),
                ('SAYING', 'SAID', 'PLAYING', 'PLAYED'),
                ('TAKING', 'TOOK', 'GOING', 'WENT'),
                ('TAKING', 'TOOK', 'PAYING', 'PAID'),
                ('TAKING', 'TOOK', 'PLAYING', 'PLAYED'),
                ('TAKING', 'TOOK', 'SAYING', 'SAID'),
                ('BUILDING', 'BUILDINGS', 'CAR', 'CARS'),
                ('BUILDING', 'BUILDINGS', 'CHILD', 'CHILDREN'),
                ('BUILDING', 'BUILDINGS', 'MAN', 'MEN'),
                ('CAR', 'CARS', 'CHILD', 'CHILDREN'),
                ('CAR', 'CARS', 'MAN', 'MEN'),
                ('CAR', 'CARS', 'BUILDING', 'BUILDINGS'),
                ('CHILD', 'CHILDREN', 'MAN', 'MEN'),
                ('CHILD', 'CHILDREN', 'BUILDING', 'BUILDINGS'),
                ('CHILD', 'CHILDREN', 'CAR', 'CARS'),
                ('MAN', 'MEN', 'BUILDING', 'BUILDINGS'),
                ('MAN', 'MEN', 'CAR', 'CARS')],
  'section': 'total'}]

 

Des paroles

Deux phrases, par exemple:

sentence_obama = 'Obama speaks to the media in Illinois'.lower().split()
sentence_president = 'The president greets the press in Chicago'.lower().split()

 Supprimer des mots d'arrêt:

from nltk.corpus import stopwords
stopwords = stopwords.words('english')
sentence_obama = [w for w in sentence_obama if w not in stopwords]
sentence_president = [w for w in sentence_president if w not in stopwords]

 Calcul des armes de destruction massive:

distance = model.wmdistance(sentence_obama, sentence_president)
print(distance)
Out:

1.3929935492649077

 Alors! Félicitations, vous avez terminé le didacticiel!

 

 

 

 

 

 

 

 

 

 

 

Publié 131 articles originaux · louange gagné 22 · vues 120 000 +

Je suppose que tu aimes

Origine blog.csdn.net/qq_38890412/article/details/104710375
conseillé
Classement