result
"Obake" kann von "dir" gesungen werden[Ähnlichkeitsgrad:0.24651645]
-① Wortsuchwerkzeug, das auf den Reim treten kann --API verwendet
--Konvertieren Sie das angegebene Wort und das Wort in der CSV-Datei mit pykakashi in Romaji.
converter
def convert_hiragana_to_roma(self, target_word_hiragana):
#Im Falle einer Aufforderung
#Da "tsu" und "tsu" in dasselbe "tsu" konvertiert werden, verwenden Sie "x" als Sonderzeichen.
if target_word_hiragana == "Tsu":
return "x"
else:
kakasi_lib = kakasi()
#Hira Kana in römische Schriftzeichen
kakasi_lib.setMode('H', 'a')
conv = kakasi_lib.getConverter()
target_word_roma = conv.do(target_word_hiragana)
return target_word_roma
Bedingungen | Ursprüngliches Wort | Vor der Konvertierung | Nach der Konvertierung |
---|---|---|---|
Nur Vokale | Obake | obake | oae |
Enthält eine Erinnerung | voll | ippai | ixai |
"N" ist enthalten | Pike | sanma | ana |
"-" Ist enthalten | Donner | sanda- | anaa |
converter
#Konvertieren Sie das Lesepseudonym in ein phonologisches Muster
def convert_roma_to_phoneme_pattern(self, target_char_roma_list):
pre_phoneme = None
hit_list = []
for target_char_roma in target_char_roma_list:
#Vasenetui
#Irgendwelche von "Ah, äh, eh, oh"
vowel_char = self.__find_vowel_char(
target_char_roma
)
specific_char = self.__find_specific_char(
pre_phoneme,
target_char_roma
)
if vowel_char:
hit_list.append(vowel_char)
pre_phoneme = vowel_char
elif specific_char:
#Kein Vokal, sondern ein Zielfall
#""
#"Hmm"
#"-"
hit_list.append(specific_char)
pre_phoneme = specific_char
else:
continue
phoneme_pattern = "".join(hit_list)
return phoneme_pattern
def __find_vowel_char(self, char_roma):
#Für Vokale
vowel_list = ["a", "i", "u", "e", "o"]
for vowel in vowel_list:
if char_roma.find(vowel) > -1:
return vowel
else:
continue
#Wenn nicht ein Vokal
return None
def __find_specific_char(self, pre_phoneme, char_roma):
#Im Fall von "n"
#Im Fall von "tsu":
if char_roma == "n" or char_roma == "x":
return char_roma
#Im Falle von "-"
#Betrachten Sie das gleiche wie den vorherigen Vokal
#Beispiel)Daa-> a
elif pre_phoneme != None and char_roma == "-":
return pre_phoneme
else:
return None
execute
$cd src
$python main.py Geist
result
"Obake" kann mit "Antwort" gereimt werden
"Obake" kann mit "dir" verweilen
--Nach dem Extrahieren der Kombination von Wörtern, die gereimt werden können, setzen Sie das angegebene Wort auf "base_word" und das aus CSV extrahierte Wort auf "pool_word" zur Analyse.
cotoha_client.py
def check_score(self, base_word, pool_word, access_token):
headers = {
"Content-Type": COTOHA_CONTENT_TYPE,
"charset": COTOHA_CHAR_SET,
"Authorization": "Bearer {}".format(access_token)
}
data = {
"s1": base_word,
"s2": pool_word,
"type": "default"
}
req = urllib.request.Request(
f"{COTOHA_BASE_URL}/{COTOHA_SIMILARITY_API_NAME}",
json.dumps(data).encode(),
headers
)
time.sleep(COTOHA_REQUEST_SLEEP_TIME)
with urllib.request.urlopen(req) as res:
body = res.read()
return json.loads(body.decode())["result"]["score"]
execute
$cd src
$python main.py Geist
result
"Obake" kann mit "answer" gesungen werden[Ähnlichkeitsgrad:0.063530244]
"Obake" kann von "dir" gesungen werden[Ähnlichkeitsgrad:0.24651645]
qiita_client.py
def list_articles(self):
req = urllib.request.Request(
f"{QIITA_BASE_URL}/{QIITA_API_NAME}?page={QIITA_PAGE_NUMBERS}&per_page={QIITA_ITEMS_PAR_PAGE}"
)
with urllib.request.urlopen(req) as res:
body = res.read()
return json.loads(body.decode())
cotoha_client.py
# target_Setzen Sie Qiitas Artikeltitel in Satz
def parse(self, target_sentence, access_token):
headers = {
"Content-Type": COTOHA_CONTENT_TYPE,
"charset": COTOHA_CHAR_SET,
"Authorization": "Bearer {}".format(access_token)
}
data = {
"sentence": target_sentence,
}
req = urllib.request.Request(
f"{COTOHA_BASE_URL}/{COTOHA_PARSE_API_NAME}",
json.dumps(data).encode(),
headers
)
time.sleep(COTOHA_REQUEST_SLEEP_TIME)
with urllib.request.urlopen(req) as res:
body = res.read()
return json.loads(body.decode())["result"]
finder.py
#Extrahieren Sie nur die Nomenklatur aus dem Ergebnis der syntaktischen Analyse und geben Sie die Liste zurück
def find_noun(self, target_sentence_element):
noun_list = []
for element_num in range(len(target_sentence_element)):
tokens = target_sentence_element[element_num]["tokens"]
for tokens_num in range(len(tokens)):
target_form = tokens[tokens_num]["form"]
target_kana = tokens[tokens_num]["kana"]
target_pos = tokens[tokens_num]["pos"]
#Wenn es sich um eine Nomenklatur handelt, speichern Sie sie in der Liste
if target_pos == TARGET_CLASS:
#In englischen Wörtern, Zahlen und Symbolen werden stattdessen Lesepseudonyme gespeichert
# TODO:Das Urteil ist verbesserungswürdig.
if re.match(FINDER_REGEX, target_form):
noun_list.append(target_kana)
else:
noun_list.append(target_form)
return noun_list
execute
$cd tool
$python word_pool_generator.py
word_pool.csv
Backup
Werkzeug
ABC
Zeichenfolge
visuell
Studio
Code
Hinweis
Management
Erweiterung
Zusammenfassung
Papier-
Kommentar
»Ehrlich gesagt ist es schwer. Selbst 40 veröffentlichte Artikel benötigen ca. 5 Minuten für die Bearbeitung. ――Die Anzahl der Nomenklaturen, die in einem Artikeltitel extrahiert werden können, beträgt etwa 2 bis 5. ――Jedoch, da ich bei der Ausgabe in eine CSV-Datei zum ersten Mal "Pandas" berührt habe, denke ich, dass ich die Logik noch weiter verbessern kann. ――Es ist ein Level, in dem ich etwas gemacht habe, das vorerst funktioniert.
――Erhöhen Sie die Variation von Wörtern ――Es scheint, dass Sie Wörter aus anderen Feldern sammeln können, indem Sie auf anderen Websites kratzen.
――Der Grund, warum ich so etwas überhaupt gemacht habe, ist, dass ich diesen Artikel vor ungefähr einem halben Jahr gesehen und mit einem Freund gesagt habe: "Ich kann die Verarbeitung natürlicher Sprache verwenden, um mich zu reimen. Ich hatte ein Gespräch: "Kann ich ein Wort finden?" ――Jedoch kannte ich das Gebiet der Verarbeitung natürlicher Sprache zu diesem Zeitpunkt (auch jetzt noch) überhaupt nicht, und als ich dieses Projekt zufällig sah, dachte ich, ich könnte etwas in der Nähe davon machen, also entschied ich mich, dieses Tool zu erstellen. Ich habe es gemacht.
Recommended Posts