nltkから生成された単語の配列を関数から戻したいと思います。この関数は1単語しか返しません。返信してコメントを外すと、5単語が返されます。Python関数は1つの値しか返しません。
私はそれらを返却し、他の機能で使用したいと考えています。
file = open('Text/Walden.txt', 'r',encoding="utf8")
walden = file.read()
walden = walden.split()
def makePairs(arr):
pairs = []
for i in range(len(arr)):
if i < len(arr)-1:
temp = (arr[i], arr[i+1])
pairs.append(temp)
return pairs
def generate(cfd, word = 'the', num = 5):
for i in range(num):
arr = [] # make an array with the words shown by proper count
for j in cfd[word]:
for k in range(cfd[word][j]):
arr.append(j)
word = arr[int((len(arr))*random.random())] # choose the word randomly from the conditional distribution
print(word, end=' ')
return(word)
#return random.choices(arr, k=num)
pairs = makePairs(walden)
cfd = nltk.ConditionalFreqDist(pairs)
generate(cfd)
出力は次のようである:
little The print The
had
>>>
または
But girl?"— print girl?"—
cases
>>>
:「言葉= ARRの[int型((LEN(ARR))*はrandom.Random。私はあなたが1つの単語を選んでいると信じています。その前に印刷されていますので、すべての単語を表示します。 – fernand0
fernand0、引数はありません。 –
行 '#print(word、end = '')'は、変数 'word'にあるものを出力します。直後にarrのランダムな位置を語って'word = arr [int((len(arr))* random.random())]'これを返す。たった一言。だから私の返信はなぜこれがうまくいかないのかを説明する。 – fernand0