def converse(raw_sentence):
words_in_sent = raw_sentence.split()
if len(words_in_sent) > 1:
bigrams = nltk.bigrams(words_in_sent)
else:
bigrams = Markov_generate_unigram(words_in_sent)
text_len = 20
generated_lines = []
for tuples in bigrams:
line = []
line.append(''.join(tuples[0]).title()+" ")
line.append(''.join(tuples[1])+" ")
for i in range(text_len):
next_words = Markov_generate_bigrams(tuples)
if not next_words:
break
cfdist = nltk.FreqDist(next_words)
next_word = cfdist.max()
line.append(next_word+" ")
new_tuple = (tuples[1], next_word)
del tuples
tuples = new_tuple
generated_lines.append(line)
longest_line = ''
for line in generated_lines:
stri = ''.join(line)
if "." in stri:
truncate_char = "."
elif "?" in stri:
truncate_char = "?"
elif "!" in stri:
truncate_char = "!"
try:
stri = stri[:stri.index(truncate_char)]
except:
pass
if len(line) > len(longest_line):
longest_line = stri.strip()+"."
return longest_line
converse.py 文件源码
python
阅读 25
收藏 0
点赞 0
评论 0
评论列表
文章目录