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

回答編集履歴

6

些細

2021/05/14 09:53

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -74,7 +74,7 @@
74
74
  ----
75
75
  よくみたら引数のtextを使ってなくて常に空文を解析してます。
76
76
  あと辞書が違うので品詞の取り方は変えないといけないですね。
77
- 大雑把には`\t-'で分解して5番目を取るんでしょうかね??
77
+ 大雑把には`\t`と`-`で分解して5番目を取るんでしょうかね??
78
78
 
79
79
  ```python
80
80
  def mec(text):

5

追記

2021/05/14 09:52

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -69,4 +69,23 @@
69
69
  素性の区切りが`-`で、品詞情報が5番目の項目になるのでそのあたりを直していく必要があるかと。
70
70
 
71
71
  1度コメントに書きましたが、他人のコードがどう動いているのか確認せずに自分のコードに入れているのが、真の問題じゃないですか?
72
- うまく動かないなら、1行ずつ動かしたりして何が起きるのか、何を意図しているのかを試して調べていく必要があります。
72
+ うまく動かないなら、1行ずつ動かしたりして何が起きるのか、何を意図しているのかを試して調べていく必要があります。
73
+
74
+ ----
75
+ よくみたら引数のtextを使ってなくて常に空文を解析してます。
76
+ あと辞書が違うので品詞の取り方は変えないといけないですね。
77
+ 大雑把には`\t-'で分解して5番目を取るんでしょうかね??
78
+
79
+ ```python
80
+ def mec(text):
81
+ parse = tagger.parse(text)
82
+ word_class = []
83
+ for line in lines:
84
+ items = re.split('[\t-]',line)
85
+ if len(items) >= 5 and items[4] == '助詞':
86
+ continue
87
+ words.append(items[0])
88
+ return ' '.join(words)
89
+ ```
90
+ という感じかと。
91
+ あとは必要な処理をちゃんと書いてください、としか。

4

追記

2021/05/14 09:52

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -37,4 +37,36 @@
37
37
 
38
38
  でしょうか。動かしてはないですが。
39
39
 
40
- taggerはグローバルに確保していいと思います。
40
+ taggerはグローバルに確保していいと思います。
41
+
42
+ ----
43
+
44
+ ```python
45
+ tagger = MeCab.Tagger()
46
+ print(tagger.parse('文字を綺麗に書きたいと思ったので習い始めました。'))
47
+ ```
48
+ すると
49
+ ```plain
50
+ 文字 モジ モジ 文字 名詞-普通名詞-一般 1
51
+ を オ ヲ を 助詞-格助詞
52
+ 綺麗 キレー キレイ 奇麗 形状詞-一般 1
53
+ に ニ ダ だ 助動詞 助動詞-ダ 連用形-ニ
54
+ 書き カキ カク 書く 動詞-一般 五段-カ行 連用形-一般 1
55
+ たい タイ タイ たい 助動詞 助動詞-タイ 終止形-一般
56
+ と ト ト と 助詞-格助詞
57
+ 思っ オモッ オモウ 思う 動詞-一般 五段-ワア行 連用形-促音便 2
58
+ た タ タ た 助動詞 助動詞-タ 連体形-一般
59
+ の ノ ノ の 助詞-準体助詞
60
+ で デ ダ だ 助動詞 助動詞-ダ 連用形-一般
61
+ 習い ナライ ナラウ 習う 動詞-一般 五段-ワア行 連用形-一般 2
62
+ 始め ハジメ ハジメル 始める 動詞-非自立可能 下一段-マ行 連用形-一般 0
63
+ まし マシ マス ます 助動詞 助動詞-マス 連用形-一般
64
+ た タ タ た 助動詞 助動詞-タ 終止形-一般
65
+ 。 。 補助記号-句点
66
+ EOS
67
+ ```
68
+ になりませんか? (Teratailだとタブが空白に置換されていて見え方は違うと思いますが)
69
+ 素性の区切りが`-`で、品詞情報が5番目の項目になるのでそのあたりを直していく必要があるかと。
70
+
71
+ 1度コメントに書きましたが、他人のコードがどう動いているのか確認せずに自分のコードに入れているのが、真の問題じゃないですか?
72
+ うまく動かないなら、1行ずつ動かしたりして何が起きるのか、何を意図しているのかを試して調べていく必要があります。

3

些細

2021/05/14 00:58

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -32,7 +32,7 @@
32
32
  words.append(items[0])
33
33
  return ' '.join(words)
34
34
  ```
35
- 1. if と words.append のインデントがずれている(元のコードと比べたらわかるはず)
35
+ 1. if と words.append のインデントがずれている
36
36
  1. returnしてない
37
37
 
38
38
  でしょうか。動かしてはないですが。

2

追記

2021/05/13 10:10

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -15,4 +15,26 @@
15
15
  `-Owakati`のオプションは、形態素解析した結果から形態素の情報を**捨てて**表層だけを空白区切りで返しなさい、という出力フォーマット指定です。
16
16
  今のコードは、形態素解析して、形態素情報を捨てて表層だけ取り出して、その結果をもう一回形態素解析にかけている、という形になっています。
17
17
  「やりたいこと」に対しては [https://teratail.com/questions/171703](https://teratail.com/questions/171703) に書いてあるコードの方が近く、`-Owakati`オプションで解析する理由がありません。
18
- 今の1つ目のループの中に、[https://teratail.com/questions/171703](https://teratail.com/questions/171703) でやっている処理を入れるイメージの方がいいでしょう。
18
+ 今の1つ目のループの中に、[https://teratail.com/questions/171703](https://teratail.com/questions/171703) でやっている処理を入れるイメージの方がいいでしょう。
19
+
20
+ ----
21
+
22
+ ```python
23
+ tagger = MeCab.Tagger()
24
+
25
+ def mec(text):
26
+ parse = tagger.parse('')
27
+ word_class = []
28
+ for line in lines:
29
+ items = re.split('[\t,]',line)
30
+ if len(items) >= 2 and items[1] == '助詞':
31
+ continue
32
+ words.append(items[0])
33
+ return ' '.join(words)
34
+ ```
35
+ 1. if と words.append のインデントがずれている(元のコードと比べたらわかるはず)
36
+ 1. returnしてない
37
+
38
+ でしょうか。動かしてはないですが。
39
+
40
+ taggerはグローバルに確保していいと思います。

1

些細

2021/05/13 10:09

投稿

quickquip
quickquip

スコア11314

answer CHANGED
@@ -7,11 +7,11 @@
7
7
  MeCab.Taggerのparseに渡せるのは文字列だけです。文字列を渡すようにしてください。
8
8
 
9
9
 
10
+ ----
10
11
 
12
+
11
13
  `m0 = MeCab.Tagger('-Owakati')`と`mecab = MeCab.Tagger()`の間にあるコードは必要ありません(正直、コードの意図がよくわかってないんですが後述の理由から不要だということははっきり言えます)。
12
14
 
13
- ----
14
-
15
15
  `-Owakati`のオプションは、形態素解析した結果から形態素の情報を**捨てて**表層だけを空白区切りで返しなさい、という出力フォーマット指定です。
16
16
  今のコードは、形態素解析して、形態素情報を捨てて表層だけ取り出して、その結果をもう一回形態素解析にかけている、という形になっています。
17
17
  「やりたいこと」に対しては [https://teratail.com/questions/171703](https://teratail.com/questions/171703) に書いてあるコードの方が近く、`-Owakati`オプションで解析する理由がありません。