質問編集履歴

1

タイトル変更とソースコード追加しました

2018/06/02 06:55

投稿

koppen54
koppen54

スコア15

test CHANGED
@@ -1 +1 @@
1
- pythonでのjanomeでAttributeError
1
+ pythonで感情値をつける際エラー
test CHANGED
@@ -26,11 +26,121 @@
26
26
 
27
27
  ```python
28
28
 
29
+ from janome.tokenizer import Tokenizer
30
+
29
31
  import bot as b
30
32
 
31
-
33
+ import pandas as pd
32
34
 
35
+
36
+
37
+ pn_csv = 'pn.dic.csv'
38
+
39
+ emo_param_file = 'emo_param.dat'
40
+
41
+ bot_emo = [1,2,3,4,5]#数字が若いほど明るい
42
+
43
+
44
+
45
+
46
+
47
+ def make_pndict(csv):
48
+
49
+ """
50
+
51
+ 極性辞書を読み込んで扱いやすい形式にして返す関数
52
+
53
+ :param csv: 極性辞書
54
+
55
+ :return: '文':pn値の辞書
56
+
57
+ """
58
+
59
+ pn_df = pd.read_csv('../src/' + csv, sep=':', encoding='utf-8', names=('word', 'read', 'POS', 'PN'))
60
+
61
+ word_list = list(pn_df['word'])
62
+
63
+ pn_list = list(pn_df['PN'])
64
+
65
+ pn_dict = dict(zip(word_list, pn_list))
66
+
67
+
68
+
69
+ return pn_dict
70
+
71
+
72
+
73
+
74
+
75
+ def emotion(say):
76
+
77
+ """
78
+
79
+ 感情を数値で算出する関数
80
+
81
+ パラメータはsrcフォルダ下のdatファイルで管理
82
+
83
+ :param say: こっちの発言
84
+
85
+ :return: 気分
86
+
87
+ """
88
+
89
+ pn_dict = make_pndict(pn_csv)
90
+
33
- tokenize_result = b.tokenizer_all(say)
91
+ tokenize_result = b.tokenizer_all(say)
92
+
93
+ feel_dict = {
94
+
95
+ 1:'絶好調',
96
+
97
+ 2:'好調',
98
+
99
+ 3:'普通',
100
+
101
+ 4:'不快',
102
+
103
+ 5:'最悪'
104
+
105
+ }
106
+
107
+
108
+
109
+ with open('../src/' + emo_param_file, "r") as f:
110
+
111
+ param = float(f.read())
112
+
113
+ for token in tokenize_result:
114
+
115
+ if token in pn_dict:
116
+
117
+ param += pn_dict[token]
118
+
119
+ with open('../src/' + emo_param_file, "w") as f:
120
+
121
+ f.write(str(param))
122
+
123
+ if -1 < param < 1:
124
+
125
+ return feel_dict[bot_emo[2]]
126
+
127
+ elif 1 <= param < 2:
128
+
129
+ return feel_dict[bot_emo[1]]
130
+
131
+ elif 2 <= param:
132
+
133
+ return feel_dict[bot_emo[0]]
134
+
135
+ elif -2 < param <= -1:
136
+
137
+ return feel_dict[bot_emo[3]]
138
+
139
+ elif param <= -2:
140
+
141
+ return feel_dict[bot_emo[4]]
142
+
143
+
34
144
 
35
145
  ```
36
146