質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

7527閲覧

python 文字列カウント

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2015/08/07 16:41

こちらで質問させていただいた者です.
http://teratail.com/questions/13963

不明点があるので,再度ご質問させていただきます.

以下のようなテキストファイルを読み込み,特定の文字列の出現回数をカウントしたいと考えています.


E 未知語
メール 名詞-サ変接続
は 助詞-係助詞
こちら 名詞-代名詞-一般
まで 助詞-副助詞
: 記号-一般

lang

1from collections import Counter 2f=open('samaple.txt',encoding='utf-8') 3data = f.read() 4counter = Counter(data) 5print(data.count('名詞')) 6>>>3

カウント結果としては,名詞の数は2であってほしいのです.
"代名詞"のように"名詞"を含むものもカウントしてしまうと不都合なのですが,
何かよい方法はないでしょうか.

"名詞-代名詞-一般"
このように名詞という文字列が必ず2回出現するなら,結果を2分の1にすればいいのですが,
"名詞-サ変接続"
こちらのような文字列も存在しているので困っています.
名詞に限らず品詞のカウントを予定しています.

ご教授お願いいたします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

文字列を日本語の単語として分割して、そこから "名詞" の数を数えるようにしてみました。

単語分割にはいろいろな方法がありますが、TinySegmenter3 をつかってみました。
参考:

のようにしてインストールできます。

単語に分割したあとに "名詞" が何回でているかのカウントは、ループを回してカウントしてもできますが、
ここでは、すべての単語毎に出現回数を数えて、その結果から "名詞" の出現回数を出力してみました。

参考:

count.py

python

1from collections import Counter 2from tinysegmenter import TinySegmenter 3import collections 4 5f = open('sample.txt') 6data = f.read() 7 8segmenter = TinySegmenter() 9statement = data 10tokenized_statement = segmenter.tokenize(statement) 11count_dict = collections.Counter(tokenized_statement) 12# print(count_dict) 13print(count_dict['名詞'])

実行例:

$ python3 count.py 2

上のコード中の print(count_dict) を有効にすると、次のように単語毎の出現回数が得られていることがわかります。

Counter({' ': 10, '\n': 5, '-': 5, '一般': 2, '詞': 2, '名詞': 2, '助詞': 2, '未知語': 1, '変接': 1, '係助': 1, '\n:': 1, '記号': 1, '-サ': 1, ' ': 1, 'まで': 1, 'は': 1, 'こちら': 1, '続': 1, '副助詞': 1, 'E': 1, '代名': 1, 'メール': 1})

投稿2015/08/07 23:12

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問