"""
33.Lien permanent "A's B"
Extraire la nomenclature dans laquelle deux nomenclatures sont reliées par "non"
[[{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'},
{'surface': 'un', 'base': 'un', 'pos': 'nom', 'pos1': 'nombre'},
{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'}],
[{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'},
{'surface': 'je', 'base': 'je', 'pos': 'nom', 'pos1': '代nom'},
{'surface': 'Est', 'base': 'Est', 'pos': 'Particule', 'pos1': '係Particule'},
{'surface': 'Chat', 'base': 'Chat', 'pos': 'nom', 'pos1': 'Général'},
{'surface': 'alors', 'base': 'Est', 'pos': 'Verbe auxiliaire', 'pos1': '*'},
{'surface': 'y a-t-il', 'base': 'y a-t-il', 'pos': 'Verbe auxiliaire', 'pos1': '*'},
{'surface': '。', 'base': '。', 'pos': 'symbole', 'pos1': 'Phrase'},
{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'}],
"""
import itertools
from typing import List
import utils
def get_none_phase(sentence: List[dict]) -> List[str]:
result = []
for i, word in enumerate(sentence):
if (
word["surface"] == "de"
and sentence[i - 1]["pos"] == "nom"
and sentence[i + 1]["pos"] == "nom"
):
result.append(sentence[i - 1]["surface"] + "de" + sentence[i + 1]["surface"])
return result
data = utils.read_json("30_neko_mecab.json")
none_phases = [get_none_phase(sentence) for sentence in data]
# In [75]: none_phases[:10]
# Out[75]: [[], [], [], [], [], [], [], [], [], ['Sa paume']]
flat = list(itertools.chain(*none_phases))
# ['Sa paume', 'Sur la paume', 'Visage de l'élève', 'Devrait faire face', 'Au milieu du visage']
Recommended Posts