Как я могу вычислить расстояние между каждой парой предложения в тексте - PullRequest
0 голосов
/ 02 января 2019

Я вычисляю расстояние Левенштейна между предложениями, и теперь у меня есть текст с несколькими предложениями. Я не знаю, как написать цикл for для генерации расстояния между каждой парой предложения.

sent = ['motrin 400-600 mg every 8 hour as need for pai . ', 'the depression : continue escitalopram ; assess need to change medication as an outpatient . ', 'Blood cltures from 11-30 grow KLEBSIELLA PNEUMONIAE and 12-01 grow KLEBSIELLA PNEUMONIAE and PROTEUS MIRABILIS both sensitive to the Meropenam which she have already be receive . ']

def similarity(sent):
    feature_sim = []
    for a,b in sent:
            feature_sim[a,b] = pylev.levenshtein(a,b) 
        print (feature_sim)

1 Ответ

0 голосов
/ 02 января 2019

Используйте пару вложенных циклов for.

Простейшая версия:

for a in sent:
    for b in sent:
        ...

Пропуск идентичных пар (расстояние Левенштейна было бы тривиально 0):

for a in sent:
    for b in sent:
        if a != b:
           ...

Избегайте обработки повторяющихся пар (a, b совпадает с b, a):

for i in range(0, len(sent)):
    for j in range(i+1, len(sent)):
        # a = sent[i], b = sent[j]
        ...

Проблема: feature_sim - это список , который может быть проиндексирован только целыми числами, а не строками или любыми другими типами.

Используйте словарь вместо:

feature_sim = {}
for i in range(0, len(sent)):
    for j in range(i+1, len(sent)):
        feature_sim[(sent[i], sent[j])] = pylev.levenshtein(sent[i], sent[j])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...