teratail header banner
teratail header banner
質問するログイン新規登録
Python 3.x

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

Q&A

解決済

2回答

4588閲覧

形態素解析を用いて名詞連結をしたい

hanpanai-tumi

総合スコア26

Python 3.x

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

0グッド

0クリップ

投稿2017/10/23 06:01

0

0

###前提・実現したいこと
形態素解析した結果を用いて、名詞を複数個連結したい。
###発生している問題・エラーメッセージ
例えば

大型台風の影響の電車日本線の全体的の遅延した。

であれば
['大型台風', 'の', '影響', 'の', '電車日本線','の', '全体的', 'の', '遅延']

となって欲しいところが
['大型', '台風', 'の', '影響', 'の', '電車日本', '日本線', '線', 'の', '全体', '的', 'の', '遅延']
となっています。

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

python

1for m in range(len(parsedData)-1): 2 if parsedData[m][3]=="名詞" and parsedData[m+1][3]=="名詞": 3 vlandData.append(parsedData[m][0]+parsedData[m+1][0]) 4 else: 5 vlandData.append(parsedData[m][0]) 6print(vlandData) 7

###補足情報(言語/FW/ツール等のバージョンなど)
形態素解析にはjumanを用いています。
最終的にはスクレイピングした結果に対して、用いたいため、いくつ名詞を連結するか分かっていなくても、動くようにしたいです。

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

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

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

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

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

guest

回答2

0

リストにて連続する名詞文字列を連結する例です。
末尾に現れる非名詞文字列(以下では「した。」)も結果として出力されます。

Python

1# [0]=単語 [1] = 名詞か?1=名詞 2words = [['大型',1],['台風',1],['の',0],['影響',1],['の',0],['電車',1],['日本',1],['線',1],['の',0],['全体',1],['的',1],['の',0],['遅延',1],['した。',0]] 3 4ret = [] # 結果のリスト 5Nouns = [] # 連続する名詞を保持するリスト 6for word in words: 7 if word[1] == 1: 8 Nouns.append(word[0]) 9 else: 10 if len(Nouns) > 0: 11 ret.append( ''.join(Nouns)) 12 ret.append(word[0]) 13 Nouns = [] 14 15# 積み残し 16if len(Nouns) > 0: 17 ret.append( ''.join(Nouns)) 18 19print(ret) 20# ['大型台風', 'の', '影響', 'の', '電車日本線', 'の', '全体的', 'の', '遅延', 'した。']

投稿2017/10/23 06:32

can110

総合スコア38352

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

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

hanpanai-tumi

2017/10/23 23:48

ご回答ありがとうございました。
guest

0

ベストアンサー

これでどうでしょう?

python

1vlandData,noun = [],"" 2for data in parsedData: 3 if data[3] == "名詞": 4 noun += data[0] 5 elif noun != "": 6 vlandData.append(noun) 7 vlandData.append(data[0]) 8 noun = "" 9 else: 10 vlandData.append(data[0] 11print(vlandData)

投稿2017/10/23 06:19

_Victorique__

総合スコア1392

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

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

hanpanai-tumi

2017/10/23 23:47

無事解決出来ました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問