"""
30.Lesen morphologischer Analyseergebnisse Permalink
Morphologisches Analyseergebnis (neko.txt.Implementieren Sie ein Programm, das mecab liest.
Jedes morphologische Element wird jedoch in einem Abbildungstyp mit dem Schlüssel der Oberflächenform (Oberfläche), der Grundform (Basis), des Teilworts (pos) und der Teilwort-Unterklassifizierung 1 (pos1) gespeichert.
Drücken Sie einen Satz als Liste morphologischer Elemente aus (Zuordnungstyp). Verwenden Sie für die restlichen Probleme in Kapitel 4 das hier erstellte Programm.
- `neko.txt.mecab`Ist`ans30.sh`Erstellt in.
-Zukünftige Fragen`30_neko_mecab.json`verwenden
Teil,Teil細分類1,Teil細分類2,Teil細分類3,Nutzungsart,Nutzungsart,Prototyp,lesen,Aussprache
['Substantiv', '代Substantiv', 'Allgemeines', '*', '*', '*', 'ich', 'Wagahai', 'Wagahai']
"""
from typing import List
import MeCab
import utils
def read_file(path: str) -> List[str]:
data = []
with open(path) as f:
for line in f:
line = line.strip()
if line != "":
data.append(line)
return data
def parse(sent: str) -> List[str]:
node = tagger.parseToNode(sent)
result = []
while node:
node_dic = {}
features = node.feature.split(",")
node_dic["surface"] = node.surface #Oberfläche
node_dic["base"] = features[6] #Base
node_dic["pos"] = features[0] #Teil (pos)
node_dic["pos1"] = features[1] #Teil Teil Unterklassifizierung 1 (pos1)
result.append(node_dic)
node = node.next
return result
file_path = "neko.txt"
data = read_file(file_path)
# ['einer', 'Ich bin eine Katze.', 'Es gibt noch keinen Namen.', 'Ich habe keine Ahnung, wo ich geboren wurde.']
tagger = MeCab.Tagger("-r /usr/local/etc/mecabrc")
result = [parse(sent) for sent in data]
# ans30
utils.save_json(result, "30_neko_mecab.json")
data = utils.read_json("30_neko_mecab.json")
utils.py
:
import itertools
import json
from typing import Any, List
def save_json(data: Any, save_path: str) -> None:
"""Save data to json format.
Args:
data (Any): The data to store.
save_path (str): Path to save.
"""
with open(save_path, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
def read_json(path: str) -> List[Any]:
"""Read json data
Args:
path (str): Path of file to read.
Returns:
List[Any]: FTSE entity data.
"""
with open(path, "r", encoding="utf-8") as f:
data = json.load(f)
return data
def flat(sequence: List[List[Any]]) -> List[Any]:
return list(itertools.chain(*sequence))
Recommended Posts