Aimeriez-vous analyser vous-même votre honte d'évasion?

préface

Bonjour, voici un autre nouveau venu. Ceci est une continuation de Dernière fois.

Si je n'utilisais que mecab la dernière fois, cela ne fonctionnerait pas, et quand je l'ai dévoilé au monde tel qu'il était, de toutes les directions (qiita, twitter et presque toutes les directions), "je pense que vous ne pouvez utiliser que le dictionnaire IPA en japonais, utilisez NEologd". Merci d'avoir volé ~~ Visage ~~ Je l'ai pris par l'avant.

J'ai également essayé d'utiliser ʻelasticsearch-analysis-kuromoji`, qui peut analyser le japonais avec le plugin Elasticsearch.

Impressions au moment de la conception (ton verbal)

――NEologd semble prendre en charge les langues modernes, mais dans quelle mesure cela fonctionnera-t-il sur Twitter, où les nouveaux mots qui commencent tout juste à devenir populaires sont monnaie courante? ――Il semble que le kuromoji puisse être divisé en japonais, mais à quel point est-il moderne? Je ne sais pas comment me débarrasser des déchirures et des balises de hachage.

environnement

Veuillez vous référer à Dernière fois.

Travaillé

-Installation de NEologd

Je vais le retirer de github.

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

Pour obtenir la mise à jour:

$ ./bin/install-mecab-ipadic-neologd -n

Trouvez l'emplacement où NEologd est installé avec la commande suivante:

$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

Comment utiliser est introduit dans le code python.

-Installer elasticsearch-analysis-kuromoji

À l'emplacement où Elasticsearch est installé ($ ES_HOME), procédez comme suit:

$ sudo bin/elasticsearch-plugin install analysis-kuromoji

Cette fois, nous analyserons le champ texte, alors soumettez le modèle suivant. (Bien sûr, après avoir démarré Elasticsearch.)

curl -XPUT --user elastic:changeme localhost:9200/_template/text_analysis?pretty -d '{
  "template": "twitter-*",
  "settings": {
    "analysis": {
      "tokenizer": {
        "kuromoji_user_dict": {
          "type": "kuromoji_tokenizer",
          "mode": "normal"
        }
      }
    }
  },
  "mappings": {
    "twitter": {
      "properties": {
        "text": {
            "type": "text",
            "fielddata": true,
            "analyzer": "kuromoji",
          "fields": {
            "keyword": {
              "type": "keyword"
            }
          }
        }
      }
    }
  }
}'

--user elastique: changeme est comment lancer curl après l'installation de x-pack. Au fait, ʻusername = élastique, password = changeme`. (Je suis désolé, je n'ai pas encore changé mon mot de passe)

Veuillez consulter Dernière fois pour savoir comment utiliser l'API Twitter.

search.py


#!/usr/bin/env python                                                                                                                                                                                           
# -*- coding: utf-8 -*-                                                                                                                                                                                         

from requests_oauthlib import OAuth1Session
import json
import MeCab

CK = '***********'
CS = '***********'
AT = '***********'
AS = '***********'

url = "https://api.twitter.com/1.1/search/tweets.json"

#here can be set ID of tweet (ordered by time), and number of tweets (default is 20, max 200)                                                                                                                   
params = {'q':'#Échapper à la honte', 'count':'200'}

# GET request                                                                                                                                                                                                   
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)

f = open("json/search_nigehaji.json","a")

if req.status_code == 200:
    timeline = json.loads(req.text)
    print(timeline)
    for tweet in timeline["statuses"]:
        word_array = []
        mecab_combo = [[] for j in range(3)]
        word_combo = []
        print(tweet)
        for word in tweet["text"].split(" "):
            word_array.append(word)
            print(word)
            if (not word.startswith('http')) and (not word.startswith('@')) and (word != 'RT'):
                tagger = MeCab.Tagger(' -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
                text_str = word.encode('utf-8')
                node = tagger.parseToNode(text_str)
                mecab_array_noun = [];mecab_array_verb = []
                while node:
                    mecab_word = node.surface.decode("utf-8")
                    pos = node.feature.split(",")[0]
                    mecab_combo[0].append(pos)
                    mecab_combo[1].append(mecab_word)
                    mecab_combo[2].append(node.feature.split(",")[6])
                    if pos == "nom":
                        mecab_array_noun.append(mecab_word)
                        print(pos)
                        print(mecab_word)
                    elif pos == "verbe":
                        mecab_array_verb.append(mecab_word)
                        print(pos)
                        print(mecab_word)
                        print(node.feature.split(",")[6])
                    node = node.next
                    print(mecab_combo)
        print("###########")
        print(len(mecab_combo[0]))
        for i in xrange(0, len(mecab_combo[0])):
            print("########################################")
            print(mecab_combo[0][i])
            stage_count = 0
            if mecab_combo[0][i] == "nom":
                print("start for")
                l = []
                for j in xrange(i, len(mecab_combo[0])):
                    print(mecab_combo[1][j])
                    if mecab_combo[0][j] == "nom":
                        l.append(mecab_combo[1][j])
                        word_combo.append(''.join(l))
                        print(''.join(l))
                    elif mecab_combo[0][j] in ["Particule", "Verbe auxiliaire", "verbe"]:
                        if stage_count != 0:
                            break
                        l.append(mecab_combo[1][j])
                        word_combo.append(''.join(l))
                        stage_count += 1
                        print(''.join(l))
                    else:
                        print(''.join(l))
                        print("end")
                        break
            if mecab_combo[0][i] == "verbe":
                print("start for")
                l = []
                for j in xrange(i, len(mecab_combo[0])):
                    print(mecab_combo[1][j])
                    if mecab_combo[0][j] == "verbe":
                        l.append(mecab_combo[1][j])
                        word_combo.append(''.join(l))
                        print(''.join(l))
                    elif mecab_combo[0][j] in ["adjectif", "Particule"]:
                        l.append(mecab_combo[1][j])
                        word_combo.append(''.join(l))
                        print(''.join(l))
                        print("end")
                        break
                    else:
                        print(''.join(l))
                        print("end")
                        break
            print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
        #injection                                                                                                                                                                                              
        tweet['words']=word_array;tweet['mecab_noun']=mecab_array_noun;tweet['mecab_verb']=mecab_array_verb;tweet['word_combo']=word_combo
        json.dump(tweet, f)
        f.write('\n')
else:
    print("Error: %d" % req.status_codea)

La différence avec Dernière fois est que NEologd a été appliqué en premier.

search.py


tagger = MeCab.Tagger(' -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')

Après cela, profitant du reflet de précédent, j'ai également supprimé les liens URL (commençant par http), les réponses (commençant par @) et «RT». Mais

La plus grande partie est le recueil de nomenclature + nomenclature + ... et nomenclature + assistants + nomenclature! J'ai essayé de saisir les mots clés. Vous pouvez ajouter autant de motifs que vous le souhaitez. Avec cela, par exemple ...

Hoshino Gen

«Wow du lundi»

résultat

Je suis dans mes bras dans la meilleure scène de l'épisode final en ce moment ... laissez-le tranquille. ..

スクリーンショット 2016-12-20 23.20.44.png

Je pense que les résultats sont plutôt bons! Pour les graphiques d'analyse de honte d'échappement autres que les balises de hachage, passez à Axe X ʻAvancé-> ʻExclude Pattern

.*https.*|\#.*|Échapper à la honte|.|..

Est spécifié. En ce qui concerne l'analyse japonaise, vous pouvez imaginer des personnages, des acteurs et des scènes à la fois en kuromoji et en mecab (analyse de nom). Si vous ne voulez pas en faire assez pour mordre python, c'est kuromoji.

Et dans l'analyse des mots clés, tout le monde semble marmonner les lignes telles qu'elles sont ...

La meilleure jolie

Et

Travail gratuit

Et

Les bonnes intentions des gens

Et

Expansion de 15 minutes

Quelque chose est classé.

Je ne l'ai pas vu depuis que je n'ai vu que 2 épisodes, et je n'ai vu que les 5 premières et 5 dernières minutes de l'épisode final, donc Je ne sais pas quels sont ces mots clés, mais je suis sûr qu'il y avait une telle ligne (une personne)

Eh bien, allons au lit. Cette scène était trop forte pour moi ...

Recommended Posts

Aimeriez-vous analyser vous-même votre honte d'évasion?
Souhaitez-vous créer un CV Twitter?
[Recrutement] Aimeriez-vous échanger des compétences en programmation?
Ravi de vous rencontrer, j'aimerais me présenter.
J'aimerais en savoir plus sur Django page nation