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

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

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

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

Q&A

解決済

1回答

933閲覧

Python リスト 浮動小数点を降順に

tsuboi

総合スコア3

Python

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

0グッド

0クリップ

投稿2020/09/14 18:25

前提・実現したいこと

<class 'numpy.float32'>で出力される浮動小数点数を降順で出力したい。

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

axis -1 is out of bounds for array of dimension 0

該当のソースコード

python

1 2import numpy as np 3for i in noun1: 4 for j in noun2: 5 noun = i.similarity(j) 6 noun = noun.sort() 7 8 if noun >= 0.65: 9 print("noun1[{}]".format(noun1.index(i)), "noun2[{}]".format(noun2.index(j))) 10 print(i, j) 11 print(noun) 12 print('') 13 print(type(noun))

試したこと

1.ndarrayからlistに変更しsortedを用い、引数にkey=floatを用いたがエラーがでた。

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

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

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

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

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

toast-uz

2020/09/14 23:23

noun1、noun2の定義を加えて、動作するソースコードを提示できますか?
Daregada

2020/09/15 00:22

回答者は過去の質問を把握しているわけではないので、いきなりnoun1だのnoun2だのと書かれても答えようがありません。
guest

回答1

0

ベストアンサー

主要部分は以下の通り。[類似度, トークン1, トークン2]のリストを類似度の降順に並べたリストをanswer_listに取得する。類似度だけが必要なら、リスト内包表記を[token1.similarity(token2) for token1, token2 in itertools.product(noun1, noun2)]に変更すればいい。

Python

1answer_list = [[token1.similarity(token2), token1, token2] for token1, token2 in itertools.product(noun1, noun2)] 2answer_list = sorted(answer_list)[::-1] 3print(answer_list)

result

1[[0.8904566, 米国, 米国政府], [0.800532, AI, AI技術], [0.79954904, 10億ドル, 10億ドル(約1060億円], [0.79246294, 量子コンピュータ, 量子情報科学], (以下略)

「noun1とnoun2を得るまで」を含む全体のコードは、質問者の過去の質問から、以下のようなものだと推測した。修正依頼にも書いたが、「noun1とnoun2を得るまで」のコードは質問自体に書いてあるべき情報。

Python

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

投稿2020/09/15 00:31

編集2020/09/15 00:33
Daregada

総合スコア11990

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

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

tsuboi

2020/09/15 04:41

説明不足で、過去の質問から参照してくださり申し訳ないです。 降順に結果が出力されました。ありがとうございます。 itertoolsという、モジュールでリスト内の積を算出できるのはしりませんでした。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問