[PYTHON] 100 traitement du langage knock-95 (en utilisant des pandas): Note avec WordSimilarity-353

Il s'agit de l'enregistrement de la 95e "Évaluation avec WordSimilarity-353" de Traitement de la langue 100 knock 2015. Calcule le ** coefficient de corrélation de Spearman ** pour le résultat de frappe précédent. Le résultat du programme auto-conçu est d'environ 23%, et le résultat lors de l'utilisation de Gensim est de 52%, ce qui est également un gros drain.

Lien de référence

Lien Remarques
095.WordSimilarity-Évaluation à 353.ipynb Lien GitHub du programme de réponse
100 coups de traitement du langage amateur:95 Je vous suis toujours redevable de 100 coups de traitement linguistique

environnement

type version Contenu
OS Ubuntu18.04.01 LTS Il fonctionne virtuellement
pyenv 1.2.15 J'utilise pyenv car j'utilise parfois plusieurs environnements Python
Python 3.6.9 python3 sur pyenv.6.J'utilise 9
3.7 ou 3.Il n'y a aucune raison profonde de ne pas utiliser la série 8
Les packages sont gérés à l'aide de venv

Dans l'environnement ci-dessus, j'utilise les packages Python supplémentaires suivants. Installez simplement avec pip ordinaire.

type version
pandas 0.25.3

Tâche

Chapitre 10: Méthode de l'espace vectoriel (II)

Au chapitre 10, nous continuerons à travailler sur l'apprentissage des vecteurs de mots du chapitre précédent.

95. Évaluation par WordSimilarity-353

À l'aide des données créées en> 94, calculez le coefficient de corrélation de Spearman entre le classement de la sortie de similarité par chaque modèle et le classement du jugement de similarité humaine.

Supplément de problème (coefficient de corrélation de Spearman)

"Coefficient de corrélation de rang de Spearman" est ** ["Coefficient de corrélation de rang de Spearman" ) ”](Https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%94%E3%82%A2%E3%83%9E%E3%83%B3%E3%81 % AE% E9% A0% 86% E4% BD% 8D% E7% 9B% B8% E9% 96% A2% E4% BF% 82% E6% 95% B0) **, la phase utilisant le classement Le nombre de relations. J'entends souvent ["coefficient de corrélation du facteur de produit de Pearson"](https://ja.wikipedia.org/wiki/%E3%83%94%E3%82%A2%E3%82%BD%E3%83 % B3% E3% 81% AE% E7% A9% 8D% E7% 8E% 87% E7% 9B% B8% E9% 96% A2% E4% BF% 82% E6% 95% B0) n'est pas un classement Utilisez la valeur pour obtenir le coefficient de corrélation. Les deux prennent des valeurs comprises entre 1 et -1, et une valeur de 1 signifie une forte corrélation positive.

Répondre

Programme de réponse [095.Evaluation by WordSimilarity-353.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/10.%E3%83%99%E3%82%AF%E3%83% 88% E3% 83% AB% E7% A9% BA% E9% 96% 93% E6% B3% 95% 20 (II) /095.WordSimilarity-353%E3%81%A7%E3%81%AE%E8 % A9% 95% E4% BE% A1.ipynb)

import pandas as pd

def calc_corr(file):
    df = pd.read_table(file, header=None, usecols=[2, 3], names=['original', 'calculated'])
    print(df.corr(method='spearman'))

calc_corr('./094.combine_1.txt')

calc_corr('./094.combine_2.txt')

Répondre au commentaire

Le code est très court car j'utilise des pandas. Spécifiez simplement spearman dans la méthode de la fonction corr.

print(df.corr(method='spearman'))

C'est le résultat de mon propre programme. L'intersection de «original» et «calculé» est la valeur résultante, qui est de 0,227916. C'est bas ...

            original  calculated
original    1.000000    0.227916
calculated  0.227916    1.000000

C'est le résultat lors de l'utilisation de Gensim. Il a considérablement augmenté à 0,516526.

            original  calculated
original    1.000000    0.516526
calculated  0.516526    1.000000

Recommended Posts

100 traitement du langage knock-95 (en utilisant des pandas): Note avec WordSimilarity-353
100 traitement du langage knock-31 (en utilisant des pandas): verbe
100 traitement du langage knock-38 (en utilisant des pandas): histogramme
100 Language Processing Knock-33 (en utilisant des pandas): nom sahen
100 traitement du langage knock-35 (utilisant des pandas): concaténation de nomenclature
100 Language Processing Knock-39 (en utilisant des pandas): la loi de Zipf
100 traitement de langage knock-34 (utilisant des pandas): "B of A"
100 traitement du langage knock-90 (en utilisant Gensim): apprendre avec word2vec
100 langage de traitement knock-20 (à l'aide de pandas): lecture de données JSON
100 Language Processing Knock-32 (utilisant des pandas): Prototype de verbe
Traitement de 100 langues knock-98 (en utilisant des pandas): Clustering par méthode Ward
100 traitement du langage knock-99 (à l'aide de pandas): visualisation par t-SNE
100 Language Processing Knock: Chapitre 2 Principes de base des commandes UNIX (à l'aide de pandas)
100 Language Processing Knock-83 (en utilisant des pandas): Mesure de la fréquence des mots / contextes
100 Language Processing Knock-30 (en utilisant des pandas): lecture des résultats de l'analyse morphologique
100 traitements de langage avec Python
100 traitements de langage avec Python (chapitre 3)
100 traitement du langage knock-73 (en utilisant scikit-learn): apprentissage
100 traitement du langage knock-74 (en utilisant scicit-learn): prédiction
100 Language Processing Knock-84 (en utilisant des pandas): Création d'une matrice de contexte de mots
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
100 traitement du langage knock-97 (en utilisant scicit-learn): clustering k-means
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
100 Language Processing Knock-71 (en utilisant Stanford NLP): Stopword
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
Traitement du langage 100 knocks-88: 10 mots à haute similitude
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 17
100 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
Traitement des ensembles de données avec des pandas (1)
100 Traitement du langage Knock-52: Stemming
100 langage de traitement knock-79 (en utilisant scikit-learn): dessin de graphe avec rappel de précision
100 Traitement du langage Knock Chapitre 1
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 traitement du langage knock-75 (en utilisant scicit-learn): poids de l'identité
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
100 traitement du langage knock-72 (en utilisant Stanford NLP): Extraction d'identité
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
Traitement du langage 100 knock-80 (remplacé par une expression régulière): formatage du corpus
Traiter les données csv avec python (traitement du comptage à l'aide de pandas)
100 traitements linguistiques knock-37 (utilisant des pandas): Top 10 des mots les plus fréquents
Apprenez facilement 100 traitements linguistiques Knock 2020 avec "Google Colaboratory"
100 traitement du langage Knock-51: découpage de mots
100 Language Processing Knock-58: Extraction de Taple
100 Language Processing Knock-57: Analyse des dépendances
100 traitement linguistique knock-50: coupure de phrase
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)