Найти следующий возможный набор нграмм с наибольшей вероятностью генерировать предложения из текстового файла - PullRequest
0 голосов
/ 03 октября 2019

Я хотел бы иметь возможность генерировать предложение, используя 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)
...