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

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

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

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

2回答

2154閲覧

重複する単語を削除したい

farinelli

総合スコア61

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

1クリップ

投稿2019/09/04 09:13

編集2019/09/05 05:41

リアルタイムで収集したツイートから、url, 返信, RTを除去した後に重複行を削除したものを表示しようとしたら、このようなエラーが表示されてしましました。
エラーの該当箇所をprint(corpus)に戻すと、以下の写真のように、重複要素を持つ二次元配列の形をした重複行が出力される事を確認済みです。

写真

イメージ説明
解決に向けてお知恵をお貸しいただけますと幸いです。宜しくお願いします。

エラー

Traceback (most recent call last): File "honban.py", line 140, in <module> stream.sample() File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 449, in sample self._start(is_async) File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 389, in _start self._run() File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 320, in _run six.reraise(*exc_info) File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/six.py", line 693, in reraise raise value File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 289, in _run self._read_loop(resp) File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 351, in _read_loop self._data(next_status_obj) File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 323, in _data if self.listener.on_data(data) is False: File "/Users/macuser/Workspaces/jxpress/trendword/.direnv/python-3.7.3/lib/python3.7/site-packages/tweepy/streaming.py", line 54, in on_data if self.on_status(status) is False: File "honban.py", line 99, in on_status corpus = set(corpus) TypeError: unhashable type: 'list'

コード

renshu.py

1#上記省略 2 def on_status(self, status): 3 text = str(status.text) 4 5 #日本語ツイートをファイルに書き込んでいる + ツイートの数を表示 6 if status.lang == "ja": 7 with open("testd.txt", "a", encoding="utf-8") as f: 8 f.write(text) 9 with codecs.open("testd.txt", "r", "utf-8") as f: 10 num_lines = sum(1 for line in open("testd.txt"))#総文書数 11 corpus = f.read().split("\n") 12 13 texts=[] 14 for i in corpus: 15 texts.append(re.sub(r"http\S+", "", i)) 16 texts.append(re.sub(r"@(\w+) ", "", i)) 17 texts.append(re.sub(r"(^RT.*)", "", i, flags=re.MULTILINE | re.DOTALL)) 18 emoji_pattern = re.compile("[" 19 u"\U0001F600-\U0001F64F" 20 u"\U0001F300-\U0001F5FF" 21 u"\U0001F680-\U0001F6FF" 22 u"\U0001F1E0-\U0001F1FF" 23 "]+", flags=re.UNICODE) 24 texts.append(emoji_pattern.sub("", i)) 25 texts.append(i) 26 texts = list(set(texts)) 27 28    mecab = MeCab('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd') 29 30 rm_list = ["RT","https","co"] 31 32 stop_words = [] 33 path = 'stop_words.txt' 34 with open(path) as g: 35 stop_words = g.readlines() 36 37 docs = [] 38 for txt in texts: 39 words = mecab.parse(txt, as_nodes=True) 40 doc = [] 41 for w in words: 42 if w.feature.split(",")[0] == "名詞": 43 if len(w.surface) >= 3: 44 if w.surface not in rm_list: 45 doc.append(w.surface) 46 docs.append(doc) 47 corpus = docs 48 corpus = set(corpus) 49 50 #重複した単語の削除 51 nouns = [] 52 for line in corpus: 53 if line not in nouns: 54 nouns.append(line) 55 print(nouns) 56#下記省略

補足情報(FW/ツールのバージョンなど)

iOS 10.14.6, Python 3.7.4, Atom

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

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

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

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

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

guest

回答2

0

corpusを集合にすればいいのではないでしょうか。
https://qiita.com/taro-ari/items/9f54536fe3c623813db1#%E9%9B%86%E5%90%88-%E3%81%AE%E4%BD%9C%E6%88%90

投稿2019/09/04 11:36

KojiDoi

総合スコア13671

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

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

farinelli

2019/09/05 05:10

集合にしたつもりなのですが、新たにエラーが出てしまいました。 ご不明な点などございましたら、指摘していただけますと幸いです。
guest

0

ベストアンサー

順番に意味がないのならばこれを入力としてsortし、その際、重複削除すればいいのでは?

投稿2019/09/04 09:18

sage

総合スコア1216

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

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

farinelli

2019/09/04 09:31

有難うございます。 理解力不足ですみません、もう少し詳細な情報をいただけますと幸いです。
sage

2019/09/05 12:14

linux環境ならば sort 入力ファイル | uniq でできるのですが、iOS環境にsortコマンドとuniqコマンドはありませんか?
farinelli

2019/10/09 06:47

お返事が遅くなりすみません.お陰様で該当箇所はどうにかなりそうです.有難うございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問