En abordant la question du traitement du langage naturel, l'extraction de texte a une méthode appelée le modèle de sujet, ce qui est extrêmement utile lors de l'extraction du sujet d'ordre technique, alors quel est le modèle de sujet? Lorsque vous utilisez un modèle de sujet? Utilisation latent analyse sémantique en Python lorsque le modèle pour aborder le sujet, mais aussi doit prêter attention à ce que les questions? Après avoir lu l'article, je pense que vous aurez le plus réel récolte!
avant-proposAvez-vous déjà été de maintenir la bibliothèque assez complète? Bibliothécaire ces gens très admirent, les livres sont classés en fonction de leur nom, le contenu ou le sujet, tout est bien géré. Mais si vous jetez eux des milliers de livres, puis les laisser faire selon le type de livres à ranger, ils pourraient jour sans fin, et encore moins à une heure de la.
Toutefois, si ces livres sont un texte électronique, puis les travaux de finition est probablement quelques secondes, sans humain. Traitement du langage naturel Hourra!
Regardez d'abord le fragment de texte suivant:
Il y a du texte de référence d'arrière-plan, vous pouvez voir un total de trois thèmes (ou un concept) - Thème 1, Thème 2 et Thème 3. Un bon modèle de sujet peut identifier des expressions similaires et les mettre dans une catégorie. Dans l'exemple ci-dessus le plus évident thème est le thème de 2, principalement sur le contenu vidéo faux.
Intéressant? Bon! Cet article décrit une méthode appelée modèle de texte à thème minier. Cet extrait est l'objet d'une technique très utile pour répondre à des problèmes de traitement du langage naturel sont également très fréquents.
Conseil: Il est fortement recommandé de lire cet article à la décomposition de valeurs singulières (SVD) et les concepts de UMAP à comprendre (https://www.analyticsvidhya.com/blog/2018/08/dimensionality-reduction-techniques-python/). Cet article est basé sur ces concepts, donc d'abord apprendre qu'ils aident à consolider notre compréhension des concepts de base.
annuairemodèle sujet est une technique non surveillée utilisée pour découvrir une variété de sujets dans un document texte. Ces thèmes sont abstraits dans la nature, qui est lié à l'autre fera l'objet du mot. En même temps, un document unique peut avoir plusieurs sujets. Le présent document entend modèle temporairement sujet boîte noire, comme indiqué ci-dessous:
La boîte noire (qui est, le modèle de sujet) les expressions connexes divisés en différents groupes, appelés thèmes. Ces sujets ont une distribution spécifique dans le texte, chaque sujet peut être combiné avec des proportions différentes de mots pour définir.
2. Lorsque vous utilisez un modèle de sujet?Rappelons que la finition du livre avant les tâches mentionnées. Maintenant, imaginez que vous devez classer les documents électroniques. Bien sûr, si le document est relativement faible, vous pouvez accomplir cette tâche manuellement. Mais si le document est particulièrement important, alors comment faire?
Cette fois, il devrait utiliser la technologie de traitement du langage naturel. Pour cette tâche, le modèle sera utilisé pour compléter le thème.
modèle sujet peut nous aider à explorer de vastes quantités de données texte, regroupement des mots, des similitudes entre le trouvé texte et a trouvé un thème abstrait. Si vous pensez qu'il n'y a pas assez de ces défis des tâches, le modèle sujet peut également trouver des résultats correspondant avec le texte de recherche dans les moteurs de recherche. Est-ce pas ce que cela signifie? Continuons à explorer à fond!
3. Analyse sémantique latente (Latent Semantic Analysis, LSA)Toutes les langues auront leur propre complexité et les traits délicats, ces machines sont difficiles à contenu de capture (aussi parfois difficile de distinguer l'homme lui-même). Par exemple, des mots différents peuvent avoir la même signification et le même mot, ils peuvent avoir des significations différentes.
look Let les deux phrases suivantes:
1. J'aimé son dernier roman beaucoup.
2. Nous aimerions faire une roman campagne de marketing.
La première phrase, « roman » de se référer à un livre, et il représente la deuxième phrase du roman, roman.
On peut en déduire le sens de ces deux mots à travers le contexte facilement, mais la machine ne sera pas attraper ce concept, car il ne comprend pas le contexte du mot à utiliser. Cette fois-ci nous avons besoin d'utiliser l'analyse sémantique latente, et il peut se fonder sur le contexte entre l'expression d'essayer de comprendre le sens de c'est que nous parlons du sujet.
Par conséquent, l'expression simplement mis en correspondance le document ne doit pas nécessairement l'effet, ce que nous avons besoin est d'apprendre à connaître le concept et le thème derrière les mots. L'analyse est Latent Semantic la capacité de trouver un moyen de cacher le sujet, maintenant nous allons explorer davantage le fonctionnement interne de l'analyse sémantique latente.
étapes mise en uvre Analyse sémantique latenteDisons que nous avons des documents m, des documents pour un total de n mots uniques, on extrait les sujets k de tous les documents. Où k est le nombre de sujets, il est défini par l'utilisateur.
- configuration en forme, tel qu'un m * n le document - matrice de mots, qui comprend un score TF-IDF.
- Ensuite, la méthode décrite ci-dessus, nous utiliserons la décomposition en valeurs singulières de la matrice (SVD) de dimension k réduite.
- décomposition en valeurs singulières (SVD) de la matrice en trois matrices. Par exemple, nous voulons utiliser une décomposition de valeurs singulières (SVD) pour dégrader la matrice A, alors nous allons obtenir la matrice U, la matrice S et la matrice VT (matrice V transposée matrice). Matrice Uk (document - matrice de phrase) de chaque rangée est une représentation vectorielle du document. La longueur de ces vecteurs est k, qui est, le nombre de sujets que nous avons mis. phrase Vector représente en Vk (mots - Thème Matrice) Résultats.
- Ainsi, la décomposition de valeurs singulières (SVD) pour chaque donnée de document et une phrase Nous avons effectué pour quantifier la longueur de chaque vecteur est k. Nous pouvons combiner une méthode de similarité cosinus de l'utilisation de ces vecteurs pour trouver des phrases et des documents similaires.
nous présentons ici comment utiliser l'analyse sémantique latente pour résoudre le modèle de sujet de problème en Python. Après avoir ouvert Python, je peux suivre les étapes ci-dessous pour commencer l'exécution de code.
4.1 lecture et l'affichage des donnéesTout d'abord à charger le package suivant:
importer numpy comme np
pandas géants importation comme pd
matplotlib.pyplot importation comme plt
Seaborn d'importation comme sns
pd.set_option ( "display.max_colwidth", 200)
Dans cet article, nous utiliserons sklearn des '20 ensembles de données » Newsgroup. Ici vous pouvez télécharger l'ensemble de données et exécuter le code.
de fetch_20newsgroups à l'importation de sklearn.datasets
ensemble de données = fetch_20newsgroups (lecture aléatoire = True, random_state = 1, supprimer = ( 'têtes', 'pieds de page', 'citations'))
documents = dataset.data
len (documents)
Sortie: 11314
dataset.target_names
< 'Alt.atheism',
'Comp.graphics',
'Comp.os.ms-windows.misc',
'Comp.sys.ibm.pc.hardware',
'Comp.sys.mac.hardware',
'Comp.windows.x',
'Misc.forsale',
'Rec.autos',
'Rec.motorcycles',
'Rec.sport.baseball',
'Rec.sport.hockey',
'Sci.crypt',
'Sci.electronics',
'Sci.med',
'Sci.space',
'Soc.religion.christian',
'Talk.politics.guns',
'Talk.politics.mideast',
'Talk.politics.misc',
'Talk.religion.misc'>
L'ensemble de données contient 11.314 copies des documents de 20 médias différents.
4.2 Données PrétraitementDémarrer, nous voulons autant que possible le nettoyage des données texte. Le principe de base est d'utiliser des expressions régulières, utilisez le remplacer ( « ») code pour tous les caractères sauf les lettres et les espaces supprimés. Ensuite, nous excluons une court terme, parce que souvent ils ne contiennent pas d'informations utiles. Enfin, nous mettons tout le texte est converti en lettres minuscules, une telle reconnaissance ne sont pas sensibles à la casse.
news_df = pd.DataFrame ({ 'document': documents})
# Retrait tout sauf alphabets`
news_df = news_df . str.replace ( "", "")
# Suppression des mots courts
news_df = news_df appliquer (lambda x :. '' .join ( ))
# Faire tout en minuscules texte
news_df = news_df appliquer. (lambda x: x.lower ())
Arrêter la suppression de mot est nécessaire, car ils sont généralement désorganisés et n'expriment aucune information. Arrêt mot contient le « il », « ils », « am », « été », « à propos », « parce que », « tout » et ainsi de suite.
Retirer les mots d'arrêt d'un document, il faut d'abord le document pour marquer la chaîne, la chaîne est coupée en étiquettes individuelles ou des mots. Après la suppression des mots d'arrêt nous rétablirons ces connectés.
de mots vides d'importation nltk.corpus
stop_words = stopwords.words ( 'anglais')
# Tokenisation
tokenized_doc = news_df appliquer. (lambda x: x.split ())
# Supprimer mots stop
tokenized_doc = tokenized_doc.apply (lambda x: )
# De-tokenization
detokenized_doc =
for i in range (len (news_df)):
t = '' .join (tokenized_doc )
detokenized_doc.append (t)
news_df = detokenized_doc
4.3 Texte - Matrice motsCeci est la première étape dans la création de modèle de thème. Nous créerons le texte contient 1000 mots avec fonction TfidfVectorizer sklearn - la matrice de mots.
de TfidfVectorizer d'importation sklearn.feature_extraction.text
vectorizer = TfidfVectorizer (stop_words = 'anglais',
max_features = 1000, # 1000 keep top termes
max_df = 0,5,
smooth_idf = True)
X = vectorizer.fit_transform (news_df )
X.shape forme # chèque de la matrice document terme
(11314, 1000)
En fait, on peut utiliser tous les mots pour créer une matrice, mais cela perdre beaucoup de temps et de ressources informatiques. Par conséquent, nous allons limiter le nombre de caractéristiques de 1000. Si vous avez des ressources informatiques suffisantes, je suggère que vous pouvez mettre tous les mots sont couverts à l'intérieur.
4.4 Modèle sujetL'étape suivante consiste à documenter et chaque mot représenté par un vecteur. Nous utiliserons la fonction TruncatedSVD sklearn des documents - la dégradation de la matrice de mots pour plusieurs matrices.
Étant donné que les données de 20 médias différents, nous avons mis en 20 thèmes. Il peut être réglé sur le nombre de sujets avec des paramètres de n_components.
de TruncatedSVD import sklearn.decomposition
# SVD représentent des documents et des termes dans les vecteurs
svd_model = TruncatedSVD (n_components = 20, = algorithme 'randomisés', n_iter = 100, random_state = 122)
svd_model.fit (X)
len (svd_model.components_)
20
éléments Svd_model de (composants) est notre thème, nous pouvons utiliser svd_model.components pour obtenir ces sujets. Enfin, laissez-nous dans ces 20 sujets, chaque sujet dans la sortie des mots les plus importants, et de voir comment nos résultats du modèle.
termes = vectorizer.get_feature_names ()
pour i, comp en énumérer (svd_model.components_):
terms_comp = zip (termes, comp)
sorted_terms = trié (terms_comp, key = lambda x: x , inverser = True)
print ( "Sujet" + str (i) + ":")
T dans sorted_terms:
imprimer (t )
print ( "")
Sujet 0: comme les gens pensent bien des savoir grâce temps
Sujet 1: fenêtres grâce carte disque advance fichier courrier
Thème 2: jeux année équipe jeu saison joueurs bon
Thème 3: carte disque Les lecteurs de disque dur Problème
Sujet 4: Windows fichiers fenêtre de fichiers programme à l'aide problème
Thème 5: puce de chiffrement des données gouvernementales d'information spatiale mail
Sujet 6: comme les sons puce savoir vélo look regard
Sujet 7: Carte vidéo vente offre moniteur prix jesus
Thème 8: connaître les gens du gouvernement vidéo de carte à puce clipper
Sujet 9: bon travail sais que le temps de problème jesus vélo
Sujet 10: pensez bien à puce grâce clipper le chiffrement besoin
Sujet 11: merci problème droit bonne fenêtre de temps de vélo
Sujet 12: bonnes fenêtres gens connaissent des fichiers de vente de fichiers
Sujet 13: espace pensez connaître problème nasa année israël
Sujet 14: les gens de bonne carte de l'espace temps nasa merci
Sujet 15: Les gens veulent jeu de temps de fenêtre problème vélo
Sujet 16: temps besoin de fichiers Windows droit de vélo vraiment
Sujet 17: fichier problème de temps pensez long courrier israël
Sujet 18: fichier carte besoin de fichiers problème bon droit
Sujet 19: fichier problème grâce utilisé la vente de puce espace
4.5 Thème de visualisationPour savoir si notre thème présenté sur la nécessité pour la visualisation. Bien sûr, nous ne pouvons visualiser plus de trois dimensions de l'information. Cependant, l'analyse (PCA) en utilisant le composant principal ou t-SNE, nous pouvons mettre des données de grande dimension est réalisée dans un affichage visuel de faible dimension. Ici, nous allons utiliser une technologie relativement nouvelle appelée UMAP (collecteur uniforme Approximation et projection).
importation umap
X_topics = svd_model.fit_transform (X)
encastrement = umap.UMAP (n_neighbors = 150, min_dist = 0,5, random_state = 12) .fit_transform (X_topics)
plt.figure (figsize = (7,5))
plt.scatter (enrobage , plongement ,
c = dataset.target,
s = 10, la taille de #
edgecolor = 'none'
)
plt.show ()
A travers le tableau ci-dessus, nous pouvons voir que le résultat est plus beau. Chaque point représente un document et de couleurs différentes représentent 20 médias, il semble que notre modèle de LSA est très efficace. UMAP peut changer les paramètres et de voir ce qui se passe à l'image.
Ce document se trouve dans tout le code sur GitHub.
(Https://github.com/prateekjoshi565/latent_semantic_analysis)
Avantages et inconvénients 5.LSADans l'exemple ci-dessus, nous pouvons voir la puissance de l'analyse sémantique latente, mais elle a toujours ses propres limites. Nous devons comprendre les avantages et les inconvénients de la LSA, afin que nous sachions quand choisir, quand vous devriez essayer d'autres méthodes.
avantages:- LSA est rapide, facile à mettre en uvre.
- L'effet est bon, bien meilleur que le modèle d'espace vectoriel plat.
- Il est un modèle linéaire, donc concentrée dans la mauvaise performance de dépendance non linéaire des données.
- hypothèse de distribution LSA normale que les mots dans un document, mais pas tous les problèmes doivent répondre à cette hypothèse.
- LDA besoin d'utiliser le SVD, qui est informatiquement opération intensive, il est difficile de mettre à jour les nouvelles données sont ajoutées.
En plus de la LSA, ainsi que d'autres techniques avancées de modélisation des sujets efficaces, tels que LDA et lda2Vec. Nous avons également écrit un bon article décrit la LDA, peut fournir une référence pour tout le monde. Lda2vec est une méthode de modèle de sujet beaucoup plus avancé, qui est basé mot word2vec intégré.
conclusionCet article, je partage leurs connaissances. modèle sujet est une chose très intéressante, il peut vous aider à composer avec un grand nombre d'ensembles de données de texte. Par conséquent, je vous suggère d'utiliser le code dans cet article pour résoudre le problème des autres ensembles de données. Exploitation minière Texte en profiter!
Compile groupe: Huang Tianyuan, Hu Ting Liens connexes: https://www.analyticsvidhya.com/blog/2018/10/stepwise-guide-topic-modeling-latent-semantic-analysis/ Pour réimprimer, s'il vous plaît laisser un message dans les coulisses, se conformer aux normes de réimpression