"""
33. 「AのB」Permalink
2つの名詞が「の」で連結されている名詞句を抽出せよ
[[{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'},
{'surface': '一', 'base': '一', 'pos': '名詞', 'pos1': '数'},
{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'}],
[{'surface': '', 'base': '*', 'pos': 'BOS/EOS', 'pos1': '*'},
{'surface': '吾輩', 'base': '吾輩', 'pos': '名詞', 'pos1': '代名詞'},
{'surface': 'は', 'base': 'は', 'pos': '助詞', 'pos1': '係助詞'},
{'surface': '猫', 'base': '猫', 'pos': '名詞', 'pos1': '一般'},
{'surface': 'で', 'base': 'だ', 'pos': '助動詞', 'pos1': '*'},
{'surface': 'ある', 'base': 'ある', 'pos': '助動詞', 'pos1': '*'},
{'surface': '。', 'base': '。', 'pos': '記号', 'pos1': '句点'},
{'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"] == "の"
and sentence[i - 1]["pos"] == "名詞"
and sentence[i + 1]["pos"] == "名詞"
):
result.append(sentence[i - 1]["surface"] + "の" + 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]: [[], [], [], [], [], [], [], [], [], ['彼の掌']]
flat = list(itertools.chain(*none_phases))
# ['彼の掌', '掌の上', '書生の顔', 'はずの顔', '顔の真中']
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme