2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

pythonでgooglecolabでマルコフ連鎖やってるんだが

1 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:01:15.759 ID:TZbAQJr10.net
from janome.tokenizer import Tokenizer
import random

t = Tokenizer()

s = "マルコフ過程とは、マルコフ性をもつ確率過程のことをいう。\
未来の挙動が現在の値だけで決定され、過去の挙動と無関係であるという性質を持つ確率過程である。"

line = ""

for token in t.tokenize(s):
line += token.surface
line += "|"

word_list = line.split("|")
word_list.pop()

dictionary = {}
queue = ""
for word in word_list:
if queue != "" and queue != "。":
if queue not in dictionary:
dictionary[queue] = []
dictionary[queue].append(word)
else:
dictionary[queue].append(word)
queue = word

def generator(start):
sentence = start
now_word = start
for i in range (1000):
if now_word == "。":
break
else:
next_word = random.choice(dictionary[now_word])
now_word = next_word
sentence += next_word
return sentence

for i in range(5):
print(generator("マルコフ"))

2 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:02:09.551 ID:TZbAQJr10.net
この文章をかえてマルコフの部分をカタカナ5文字以上のやつにしたり
漢字にするとエラーになるんだが何で?

3 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:03:19.525 ID:bcCE9Ea2r.net
知らんけどranger指定あるからじゃない

4 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:03:53.353 ID:PdAJCBNmd.net
マルコフ連鎖どっかで名前だけ聞いたわ

5 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:08:05.266 ID:TZbAQJr10.net
>>3
どこにあるんだろうか?

6 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:11:43.233 ID:cxvd4gB10.net
パッと見だけどsの文章に従ってるんじゃない?
マルコフ過 とか指定したら5文字でもいけそう

7 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:16:41.385 ID:BaEkkNb+p.net
エラーメッセージ貼ってくれ

8 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:18:24.642 ID:BaEkkNb+p.net
generaterの引数に渡した文字列にsに含まれてない文字があると
random.choiceのタイミングでエラーになるかな

9 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:22:27.416 ID:cxvd4gB10.net
あ嘘ついたわgeneratorの

next_word = random.choice(dictionary[now_word])

この部分でnow_wordを指定してるからdictionaryに含まれてなくてエラーになってそう
で辞書作ってんのが

dictionary[queue].append(word)
queue = word

で、wordはword_listから取ってて、word_listの生成が

for token in t.tokenize(s):
line += token.surface
line += "|"

word_list = line.split("|")

だからt.tokenize(s)の時点で生成されたワードしか指定できないんじゃね
tokenizeが何をどう生成してるかは知らん

10 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:24:20.788 ID:TZbAQJr10.net
>>9
そうなのか
それじゃどうしようもないな

11 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:27:52.131 ID:TZbAQJr10.net
>>7
KeyError Traceback (most recent call last)
<ipython-input-4-e12f7432ff53> in <module>()
39
40 for i in range(4):
---> 41 print(generator("野獣先輩"))

<ipython-input-4-e12f7432ff53> in generator(start)
33 break
34 else:
---> 35 next_word = random.choice(dictionary[now_word])
36 now_word = next_word
37 sentence += next_word

KeyError: '野獣先輩'

マルコフのとこ野獣先輩にしたらこんなん出てきた

12 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:34:30.410 ID:BaEkkNb+p.net
>>11
あれ、マルコフだと動くの意味わからんくなってきた
toknizeってなんか単語ごとに区切ってくれるんかね
pc起動する気が起きねえ

generaterの引数を
random.choice(list(word_list))にしたらいけねえかな

13 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:45:32.894 ID:BaEkkNb+p.net
結果が気になって寝れないんだが

14 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:46:03.936 ID:TZbAQJr10.net
>>12
やってみたらできたわサンガツ!

15 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:46:47.273 ID:BaEkkNb+p.net
>>14
おめでとう
おやすみ

16 :以下、?ちゃんねるからVIPがお送りします:2021/03/27(土) 02:54:00.430 ID:TZbAQJr10.net
>>15
おやすみ

総レス数 16
6 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200