前提・実現したいこと
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('')
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 12:28
2020/09/15 13:05