Hallo, dies ist ein weiterer Neuling. Dies ist eine Fortsetzung von Letztes Mal.
Wenn ich das letzte Mal nur Mecab verwendet hätte, würde es nicht funktionieren, und als ich es der Welt so wie es war aus allen Richtungen (Qiita, Twitter und fast allen Richtungen) enthüllte, "Ich denke, Sie können nur das IPA-Wörterbuch auf Japanisch verwenden, verwenden Sie NEologd". Danke fürs Fliegen ~~ Face ~~ Ich habe es von vorne genommen.
Ich habe auch versucht, "elasticsearch-analysis-kuromoji" zu verwenden, das Japanisch mit dem Elasticsearch-Plugin analysieren kann.
――NEologd scheint moderne Sprachen zu unterstützen, aber wie weit wird es auf Twitter funktionieren, wo neue Wörter, die gerade erst populär werden, weit verbreitet sind? ―― Es scheint, dass Kuromoji in Japanisch unterteilt werden kann, aber wie modern ist es? Ich bin mir nicht sicher, wie ich Risse und Hash-Tags loswerden soll.
Weitere Informationen finden Sie unter Letztes Mal.
-Installation von NEologd
Ich werde es aus Github ziehen.
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
So erhalten Sie das Update:
$ ./bin/install-mecab-ipadic-neologd -n
Suchen Sie den Speicherort, an dem NEologd installiert ist, mit dem folgenden Befehl:
$ echo `mecab-config --dicdir`"/mecab-ipadic-neologd"
Die Verwendung wird im Python-Code vorgestellt.
-Installieren Sie elasticsearch-analysis-kuromoji
Gehen Sie an dem Ort, an dem Elasticsearch installiert ist ($ ES_HOME
), wie folgt vor:
$ sudo bin/elasticsearch-plugin install analysis-kuromoji
Dieses Mal werden wir das Feld "Text" analysieren. Senden Sie daher die folgende Vorlage. (Natürlich nach dem Start von 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 elastic: changeme
ist das Werfen von Locken nach der Installation von x-pack. Übrigens "Benutzername = elastisch" und "Passwort = ändern". (Es tut mir leid, dass ich mein Passwort noch nicht geändert habe.)
Informationen zur Verwendung der Twitter-API finden Sie unter Letztes Mal.
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':'#Entkomme der Schande', '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 == "Substantiv":
mecab_array_noun.append(mecab_word)
print(pos)
print(mecab_word)
elif pos == "Verb":
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] == "Substantiv":
print("start for")
l = []
for j in xrange(i, len(mecab_combo[0])):
print(mecab_combo[1][j])
if mecab_combo[0][j] == "Substantiv":
l.append(mecab_combo[1][j])
word_combo.append(''.join(l))
print(''.join(l))
elif mecab_combo[0][j] in ["Partikel", "Hilfsverb", "Verb"]:
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] == "Verb":
print("start for")
l = []
for j in xrange(i, len(mecab_combo[0])):
print(mecab_combo[1][j])
if mecab_combo[0][j] == "Verb":
l.append(mecab_combo[1][j])
word_combo.append(''.join(l))
print(''.join(l))
elif mecab_combo[0][j] in ["Adjektiv", "Partikel"]:
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)
Der Unterschied zu Letztes Mal besteht darin, dass NEologd zuerst angewendet wurde.
search.py
tagger = MeCab.Tagger(' -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
Danach entfernte ich unter Ausnutzung der Reflexion von vorherige auch URL-Links (beginnend mit http), Antworten (beginnend mit @) und RT
. Aber
Der größte Teil ist die Sammlung von Nomenklatur + Nomenklatur + ... und Nomenklatur + Assistenten + Nomenklatur! Ich habe versucht, die Trefferwörter aufzunehmen. Sie können beliebig viele Muster hinzufügen. Damit zum Beispiel ...
Hoshino Gen
Monday's Wow
Ich umarme gerade die beste Szene der letzten Folge ... lass es in Ruhe. ..
Ich finde die Ergebnisse ziemlich gut! Verwenden Sie für andere Diagramme zur Analyse der Fluchtscham als Hash-Tags "Erweitert" -> "Muster ausschließen" von "X-Achse".
.*https.*|\#.*|Entkomme der Schande|.|..
Angegeben. Bei der japanischen Analyse können Sie sich Charaktere, Schauspieler und Szenen sowohl in Kuromoji als auch in Mecab vorstellen (Nomenanalyse). Wenn Sie nicht genug tun möchten, um Python zu beißen, ist es Kuromoji.
Und in der Hit-Wort-Analyse scheint jeder die Zeilen so zu murmeln, wie sie sind ...
Das beste hübsch
Und
Freie Arbeit
Und
Die guten Absichten der Menschen
Und
15 Minuten Erweiterung
Etwas ist in eingestuft.
Ich habe es nicht gesehen, seit ich nur 2 Folgen gesehen habe, und ich habe nur die ersten und letzten 5 Minuten in der letzten Folge gesehen, also Ich weiß nicht, was diese Schlüsselwörter sind, aber ich bin sicher, dass es eine solche Zeile gab (eine Person)
Lass uns ins Bett gehen. Diese Szene war zu stark für mich ...