Я хотел бы иметь возможность генерировать предложение, используя n-граммы из текстового файла, начиная со случайного слова в текстовом файле.
Пока я могу добавить все би-биграммы в словарь с биграммой в качестве ключа и счетчиком каждого вхождения в качестве значения. Я также могу генерировать случайно выбранное слово, с которого я хотел бы начать предложение.
После того, как случайно сгенерированное слово выбрано в качестве начального слова, как я могу просмотреть словарь и найти, сколько раз это выбранное слово встречается, а затем взять наибольшее количество биграмм, которое начинается с выбранного слова вЧтобы найти наиболее вероятное слово для подражания? После этого он должен заканчиваться знаком препинания, таким как (!?.)
for filename_value in filenames:
with open(filename_value,"r") as fileinput:
#print(fileinput.read())
lines = fileinput.read() #reads in the lines in the fileinput
lines = lines.lower() #lowers all of the strings in the lines of the fileinput
lines = re.findall(r"[\w]+|[.,!?;:]", lines) #separates all punction from input file
total_count = 0
for i in range(len(lines)-1): #iterate thru the lines of text in order to append the following word to the first
bigram_pair = lines[i:i+2] #get two consecutive words
bigram_string = bigram_pair[0] + " " + bigram_pair[1]
if bigram_string in bigram_dict:
bigram_dict[bigram_string] += 1
else:
bigram_dict[bigram_string] = 1
total_count += 1
sorted_count = sorted(bigram_dict.items(), key = lambda kv: kv[1])
sorted_bigram_dict = collections.OrderedDict(sorted_count)
print(sorted_bigram_dict)
start_word = random.choice(lines)