回答編集履歴

2

 

2023/10/10 09:12

投稿

退会済みユーザー
test CHANGED
@@ -15,3 +15,8 @@
15
15
  ビルゲイツ(ID:0)
16
16
 
17
17
  みたいな感じです。
18
+
19
+ githubで見つけた、なう
20
+ ---
21
+ githubに[Pythonの実装例](https://github.com/topics/akinator?l=python)がたくさんありますね。
22
+ 特に[tanacchiさん](https://github.com/tanacchi/line_akinator)は日本人っぽいので、ソースコードを見やすいと思います。

1

 

2023/10/10 09:09

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,7 @@
1
1
  > 言語はPythonを使うという情報は入手している
2
- 対象の人ごとにID(integer)を割り振って、IDごとにYES/NOで割れる条件を割り振るところから始まると思います。具体的な方法で行くと、決定木系の方法が相性が良いと思います。Pythonで決定木、というとScikit-learnが一番とっつきやすいです。[Scikit-learnの決定木](https://scikit-learn.org/stable/modules/tree.html)
2
+ 対象の人ごとにID(integer)を割り振って、IDごとにYES/NOで割れる条件を割り振るところから始まると思います。具体的な方法で行くと、決定木系の方法が相性が良いと思います。
3
+
4
+ Pythonで決定木、というとScikit-learnが一番とっつきやすいです。[Scikit-learnの決定木](https://scikit-learn.org/stable/modules/tree.html)
3
5
  派生方法でアンサンブル(スタッキング、バギング、ブースティング…いずれもゆるく言えば「決定木を束ねて使う」です)なアプローチがありますが、方法が違うとはいえ、使い方としては基本的に決定木の使い方と同じなので、まずはシンプルな決定木で行くのがいいと思います。
4
6
 
5
7
  あとは、走らせながらデータを集めて、「正解データが登録されていなければ、ユーザーのお願いして入力してもらう」を繰り返す感じと思います。
@@ -10,6 +12,6 @@
10
12
  アメリカ人:True
11
13
  OSを作った:True
12
14
  窓な人:True
13
- ビルゲイツ
15
+ ビルゲイツ(ID:0)
14
16
 
15
17
  みたいな感じです。