質問するログイン新規登録

質問編集履歴

1

情報の追加

2018/10/01 12:11

投稿

taiyo2017
taiyo2017

スコア170

title CHANGED
File without changes
body CHANGED
@@ -1,58 +1,1 @@
1
- Cabocha ( https://taku910.github.io/cabocha/ ) を使っています。
1
+ Cabocha ( https://taku910.github.io/cabocha/ ) を使っています。
2
- キーになる名詞の抽出を行いたいです。
3
- ```ここに言語を入力
4
- import CaboCha
5
-
6
- def get_word(tree, chunk):
7
- surface = ''
8
- for i in range(chunk.token_pos, chunk.token_pos + chunk.token_size):
9
- token = tree.token(i)
10
- features = token.feature.split(',')
11
- if features[0] == '名詞':
12
- surface += token.surface
13
- elif features[0] == '形容詞':
14
- surface += features[6]
15
- break
16
- elif features[0] == '動詞':
17
- surface += features[6]
18
- break
19
- return surface
20
-
21
- def get_2_words(line):
22
- cp = CaboCha.Parser('-f1')
23
- tree = cp.parse(line)
24
- chunk_dic = {}
25
- chunk_id = 0
26
- for i in range(0, tree.size()):
27
- token = tree.token(i)
28
- if token.chunk:
29
- chunk_dic[chunk_id] = token.chunk
30
- chunk_id += 1
31
-
32
- tuples = []
33
- for chunk_id, chunk in chunk_dic.items():
34
- if chunk.link > 0:
35
- from_surface = get_word(tree, chunk)
36
- to_chunk = chunk_dic[chunk.link]
37
- to_surface = get_word(tree, to_chunk)
38
- tuples.append((from_surface, to_surface))
39
- return tuples
40
-
41
- if __name__ == '__main__' :
42
- line = '太郎は花子が読んでいる本を次郎に渡した'
43
- tuples = get_2_words(line)
44
- for t in tuples:
45
- print(t[0] + ' => ' + t[1])
46
- ```
47
- とコードを書いて実行すると、
48
- ```ここに言語を入力
49
- 太郎 => 渡す
50
- 花子 => 読む
51
- 読む => 本
52
- 本 => 渡す
53
- 次郎 => 渡す
54
- ```
55
- と出力されました。
56
- 太郎が渡したものを抽出したいのですが、
57
- 渡すにかかっているのは太郎以外に本と次郎があって、今回のケースではどちらを渡したのか判別がつきません。
58
- 太郎が渡したもの=本を抽出するにはどうしたらいいですか?