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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

Q&A

解決済

1回答

7714閲覧

janomeでcsvを形態素解析したい

cir

総合スコア19

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python 3.x

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

0グッド

0クリップ

投稿2016/10/25 08:14

編集2016/10/25 08:15

###前提・実現したいこと
まず、janomeの簡略辞書を作り、
その後、csvのnameの部分を形態素解析したいと考えています。
csvと簡略辞書の中身は以下のようになっています。
【csv(food.csv)】
name,price1,price2
トマト 袋 スタンドポリ,398円,429円
ミニトマト 1個,158円,170円
トマト袋 無選別 500g,398円,429円

【簡略辞書(userdic.csv)】
トマト,カスタム名詞,トマト
ルネッサンストマト,カスタム名詞,ルネッサンストマト
ミニトマト,カスタム名詞,ミニトマト

tokenize() メソッドに解析したい文字列以外をいれたいとき、どのようなコードを書けばよいのか
わかりません。
調べても目的と合致するページを見つけることができないので、皆さんに教えていただければ幸いです。

###該当のソースコード

python

1import csv 2from janome.tokenizer import Tokenizer 3t = Tokenizer("userdic.csv", udic_type="simpledic", udic_enc="utf8") 4 5with open('food.csv', 'rt') as f: 6 reader = csv.reader(f) 7for i in t.tokenize(u'reader'): 8 print(i)

上記のコードを実行してもreaderが形態素解析されます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

解析したいのは food.csvname 列ということですよね。

その場合、CSVを読み込んで name 列の文字列を解析にかければよろしいのではないかと思われます。

food.csv, userdic.csv ともに文字コードはUTF-8として Python 3.5.1 になります。

コード

python

1# -*- encoding: utf-8 -*- 2import csv 3from janome.tokenizer import Tokenizer 4t = Tokenizer("userdic.csv", udic_type="simpledic", udic_enc="utf8") 5 6with open('food.csv', encoding='utf-8') as f: 7 reader = csv.reader(f) 8 next(reader) 9 for columns in reader: 10 for i in t.tokenize(columns[0]): 11 print(i) 12 print()
  • CSV を読み込んで1行目のヘッダー(name,price1,price2)は不要と思われるのでnext(reader)で次の行に進めます。

python

1# 文字コードUTF-8のCSVを読み込む部分 2with open('food.csv', encoding='utf-8') as f: 3 reader = csv.reader(f) 4 next(reader)
  • 読み込んだCSVの最初の列が name 列になるので columns[0] を解析にかけます。

python

1# csvから1行ずつ読み込む部分 2 for columns in reader: 3 for i in t.tokenize(columns[0]):

結果

トマト カスタム名詞,*,*,*,*,*,トマト,トマト,トマト 記号,空白,*,*,*,*,*,*,* 袋 名詞,一般,*,*,*,*,袋,フクロ,フクロ 記号,空白,*,*,*,*,*,*,* スタンド 名詞,一般,*,*,*,*,スタンド,スタンド,スタンド ポリ 名詞,一般,*,*,*,*,ポリ,ポリ,ポリ ミニトマト カスタム名詞,*,*,*,*,*,ミニトマト,ミニトマト,ミニトマト 記号,空白,*,*,*,*,*,*,* 1 名詞,数,*,*,*,*,*,*,* 個 名詞,接尾,助数詞,*,*,*,個,コ,コ トマト カスタム名詞,*,*,*,*,*,トマト,トマト,トマト 袋 名詞,一般,*,*,*,*,袋,フクロ,フクロ 記号,空白,*,*,*,*,*,*,* 無 接頭詞,名詞接続,*,*,*,*,無,ム,ム 選別 名詞,サ変接続,*,*,*,*,選別,センベツ,センベツ 記号,空白,*,*,*,*,*,*,* 500 名詞,数,*,*,*,*,*,*,* g 名詞,固有名詞,組織,*,*,*,*,*,*

投稿2016/10/26 01:52

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cir

2016/10/26 07:19

for文の中にfor文を入れることができることを初めて知りました!!!始めのfor文で csvのカラムを1行ずつ読み込んで、そのカラムに対して次のfor文が形態素解析を しているのですね。 for文とcsvモジュールへの理解が足りなかったようです。 回答ありがとうございます。とても助かりました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問