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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

自然言語処理

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

Q&A

1回答

964閲覧

Python if文内でのlistの作り方。

tsuboi

総合スコア3

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Python

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

自然言語処理

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

0グッド

0クリップ

投稿2020/09/15 08:42

編集2020/09/15 12:36

前提・実現したいこと

if noun>=0.65(nounは、単語の分散をかけたコサイン類似度) nounの値が0.65より大きい時のiの文字をリストに入れたい。この場合、条件時において、iの値として出力される値は、米国、量子コンピュータ、AI、10億ドルを[米国、量子コンピュータ、AI、10億ドル]という風にリストに入れたい。

![イメージ説明]

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-266-38ac096869a3> in <module> 27 print(noun) 28 print('') ---> 29 lists = i.list() 30 print(lists) AttributeError: 'spacy.tokens.span.Span' object has no attribute 'list'

該当のソースコード

Python

1text1 = "米国、量子コンピュータやAIに10億ドルを投資、12の研究センターを新設へ。 米国政府は8月26日(米国時間)、量子情報科学やAI技術に今後5年間で10億ドル(約1060億円)を投資すると発表した。 これらの研究を進めるため、12の研究センターを新設するとしている。 量子情報科学研究センターの設立は米エネルギー省(DOE)が主導。アルゴンヌ国立研究所(イリノイ州)などDOE傘下の5つの研究機関でそれぞれ研究センターを立ち上げるため、6億2500万ドルを助成する。参画する民間企業や大学も、合わせて3億ドルを資金提供する。量子コンピュータを開発する米IBMやIntel、Microsoftなども量子情報科学研究センターに参画を表明。各センターでは複数の研究機関や民間企業から集まった共同研究チームが、量子ネットワーク、量子センシング、量子コンピューティング、量子材料科学などを主要なテーマに据えて研究を進める。AIの研究開発は米国立科学財団が主導。7つの研究センターの設立に1億4000万ドルを助成する。パートナー機関からの資金提供も含めると助成金額は3億ドルに上るという。 米国はこれらの研究センターを新設することで、次世代技術のリーダーシップ確保の他、雇用創出や次世代の労働力の育成にもつなげたい考えだ。" 2 3import spacy 4import itertools 5nlp = spacy.load('ja_ginza') 6 7text1 = nlp(text1) 8sents = list(text1.sents) 9sents = sents[:2] 10 11sentence1 = sents[0] 12sentence2 = sents[1] 13noun1 = list(sentence1.noun_chunks) 14noun2 = list(sentence2.noun_chunks) 15 16print(noun1) 17print(noun2) 18print('') 19 20for i in noun1: 21 for j in noun2: 22 noun = i.similarity(j) 23 24 if noun >= 0.65: 25 print("noun1[{}]".format(noun1.index(i)), "noun2[{}]".format(noun2.index(j))) 26 print(i, j) 27 print(noun) 28 print('') 29 lists = i.list() 30 print(lists)

自己改善点
空のリストを作ってから、入れることによって出力できました。
よく、for文でどの様な処理がされているか、理解することが大切でした。

python

1box = [] 2for i in noun1: 3 for j in noun2: 4 noun = i.similarity(j) 5 if noun >= 0.65: 6 box.append(i) 7 print("noun1[{}]".format(noun1.index(i)), "noun2[{}]".format(noun2.index(j))) 8 print(i, j) 9 print(noun) 10 print('')

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

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

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

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

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

guest

回答1

0

リストの定義すべき場所は、使用用途によって異なるでしょうから
for文内や、for文の前など任意の然るべき場所で定義して下さい。

python

1lst = [] 2 3for i in range(10): 4 lst.append(i) 5print(lst) 6 7>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

投稿2020/09/15 11:01

nto

総合スコア1438

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

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

tsuboi

2020/09/15 12:28

ありがとうございます。 for文の構造をしっかり観察したら、希望通りの出力になりました。
nto

2020/09/15 13:05

単純なものでしたが難しく考えすぎてしまっていたのかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問