Как связать оценку языковой модели всего предложения с оценкой составляющих предложения
Я обучил языковой модели KENLM около 5000 английских предложений / параграфов. Я хочу запросить эту модель ARPA с двумя или более сегментами и посмотреть, можно ли их объединить, чтобы сформировать более длинное предложение, возможно, более "грамматическое". Ниже приведен код Python, который я использовал для получения логарифмических оценок - и десятичного значения мощности - сегментов и "предложения". Я привел два примера. Очевидно, что предложение в первом примере более грамматично, чем предложение во втором примере. Однако мой вопрос не об этом, а о том, как связать оценку языковой модели целого предложения с оценкой составляющих предложения. То есть, если предложение грамматически лучше его составляющих.
import math
import kenlm as kl
model = kl.LanguageModel(r'D:\seg.arpa.bin')
print ('************')
sentence = 'Mr . Yamada was elected Chairperson of'
print(sentence)
p1=model.score(sentence)
p2=math.pow(10,p1)
print(p1)
print(p2)
sentence = 'the Drafting Committee by acclamation .'
print(sentence)
p3=model.score(sentence)
p4=math.pow(10,p3)
print(p3)
print(p4)
sentence = 'Mr . Yamada was elected Chairperson of the Drafting Committee by acclamation .'
print(sentence)
p5=model.score(sentence)
p6=math.pow(10,p5)
print(p5)
print(p6)
print ('-------------')
sentence = 'Cases cited in the present volume ix'
print(sentence)
p1=model.score(sentence)
p2=math.pow(10,p1)
print(p1)
print(p2)
sentence = 'Multilateral instruments cited in the present volume xiii'
print(sentence)
p3=model.score(sentence)
p4=math.pow(10,p3)
print(p3)
print(p4)
sentence = 'Cases cited in the present volume ix Multilateral instruments cited in the present volume xiii'
print(sentence)
p5=model.score(sentence)
p6=math.pow(10,p5)
print(p5)
print(p6)
- ************ Мистер. Ямада был избран Председателем Редакционного комитета путем аккламации -34.0706558228 8.49853715087e-35. -28,3745193481 4,22163470933e-29 г-н. Ямада был избран Председателем Редакционного комитета путем аккламации. -55.5128440857 3.07012398337e-56 ------------- Случаи, цитируемые в настоящем томе ix -27.7353248596 1.83939558773e-28 Многосторонние инструменты, цитируемые в настоящем томе xiii -34.4523620605 3.52888852435e-35 Случаи, цитируемые в настоящий том ix Многосторонние инструменты, цитируемые в настоящем томе xiii -60,7075233459 1,9609957573e-61
1 ответ
С использованием
Список (model.full_scores(пересылаются))
вернуть детали составляющей предложения, т.е. слова.
Это возвращает список и повторяет это, чтобы получить доступ к деталям по словам. Каждый элемент списка содержит
Вышеприведенное возвращает логарифмическую вероятность, ngram-length и является ли слово OOV (вне словаря) для каждого слова в предложении.