"""
30.Lecture des résultats de l'analyse morphologique Permalink
Résultat de l'analyse morphologique (neko.txt.Implémentez un programme qui lit mecab).
Cependant, chaque élément morphologique est stocké dans un type de mappage avec la clé de forme de surface (surface), de forme de base (base), une partie du mot (pos) et une partie du mot sous-classification 1 (pos1).
Exprimez une phrase sous forme de liste d'éléments morphologiques (type de mappage). Pour le reste des problèmes du chapitre 4, utilisez le programme créé ici.
- `neko.txt.mecab`Est`ans30.sh`Créé en.
-Questions futures`30_neko_mecab.json`utilisation
Partie,Partie細分類1,Partie細分類2,Partie細分類3,Type d'utilisation,Type d'utilisation,Prototype,en train de lire,prononciation
['nom', '代nom', 'Général', '*', '*', '*', 'je', '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 #Surface
node_dic["base"] = features[6] #Base
node_dic["pos"] = features[0] #Partie (pos)
node_dic["pos1"] = features[1] #Sous-classification des pièces détachées 1 (pos1)
result.append(node_dic)
node = node.next
return result
file_path = "neko.txt"
data = read_file(file_path)
# ['un', 'Je suis un chat.', 'Il n'y a pas encore de nom.', 'Je n'ai aucune idée d'où je suis né.']
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