Разработать более надежный метод обработки слов, который не влияет на коэффициент сходства при реконструкции предложенийPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Разработать более надежный метод обработки слов, который не влияет на коэффициент сходства при реконструкции предложений

Сообщение Anonymous »

Я работаю над проектом, в котором восстанавливаю предложения, извлеченные из PDF-файла. Предложения предварительно обрабатываются с помощью send_tokenize из nltk, а слова, которые я пытаюсь сопоставить, извлекаются непосредственно из исходного PDF-файла (без предварительной обработки). Из-за этих различий я использую fuzz.ratio из библиотеки fuzzywuzzy (или thefuzz) для максимально точного сравнения и восстановления предложений, допуская небольшие изменения, такие как пунктуация, пробелы или разрывы строк.
Проблема, с которой я столкнулся, заключается в том, что некоторые слова не влияют на коэффициент сходства при добавлении, то есть они добавляются к текущему предложению, хотя на самом деле могут принадлежать следующему. В одном случае это даже произошло с таким словом, как «Следующий», которое, как я ожидал, будет весьма существенным.
Кроме того, длина предложения, похоже, влияет на это: по мере того, как предложение увеличивается, эффект от добавления отдельных слов уменьшается, что затрудняет принятие решения о том, к какому месту они принадлежат. Я также попробовал проверить эти слова в следующем предложении, но это усложняет ситуацию:
  • Слово может существовать в обоих предложениях, что приводит к совпадению символов. это ложно увеличивает соотношение.
  • Частичное совпадение символов слова в следующем предложении может создать впечатление, что слово принадлежит этому месту, хотя на самом деле это не так.
Почему я использую fuzz.ratio:
Предложения, которые я реконструирую, были предварительно обработаны с помощью nltk > send_tokenize, поэтому они могут отличаться от извлеченных слов (которые извлекаются из необработанного необработанного документа). fuzz.ratio учитывает эти различия, обрабатывая незначительные неточности в пунктуации и пробелах.
Минимальный пример, где я пытаюсь построить предложение из подмножества извлеченные слова:

Код: Выделить всё

from thefuzz import fuzz

# List of words extracted from a PDF (subset example)
all_pages_words = [
{"word": "Following"}, {"word": "the"}, {"word": "guidelines"},
{"word": "for"}, {"word": "submission"}, {"word": "are"}, {"word": "critical"},
{"word": "to"}, {"word": "success"}
]

# Sentence to match against
sentence_token = "Following the guidelines for submission"

# Construct sentence and calculate similarity
constructed_sentence = ""
old_similarity_ratio = fuzz.ratio(sentence_token, constructed_sentence)
starting_index = 0

while starting_index < len(all_pages_words):
last_word_index_pre_concatenation = len(constructed_sentence)
constructed_sentence += " " + all_pages_words[starting_index]["word"]

new_similarity_ratio = fuzz.ratio(sentence_token, constructed_sentence)

# Problem: some words don't affect the similarity ratio, causing issues
if new_similarity_ratio < old_similarity_ratio:
# Roll back and stop
constructed_sentence = constructed_sentence[:last_word_index_pre_concatenation]
break
else:
old_similarity_ratio = new_similarity_ratio

starting_index += 1

print(f"Final constructed sentence: {constructed_sentence.strip()}")
При восстановлении длинных предложений добавление отдельных слов (особенно ближе к концу) существенно не меняет соотношение, что затрудняет определение их принадлежности.
Я пробовал проверяет, принадлежат ли эти слова следующему предложению, но это приводит к новым проблемам:
  • Слово может существовать в обоих предложениях, что приводит к частичному совпадению символов и ложному увеличивая соотношение.
  • По мере увеличения следующего предложения эффект буферизованного слова становится меньше, что затрудняет определение того, действительно ли оно принадлежит.
Я даже пытался разработать систему, в которой я строю предложение дважды, по одному разу с каждого направления (лево-право и право-лево), чтобы гарантировать, что изменения соотношения остаются значительными, но это также не совсем надежно и добавляет больше сложности (не уверен, что я усложняю это слишком)
Вопрос
  • Как Могу ли я создать более надежный метод для обработки этих слов, который не будет существенно влиять на коэффициент сходства при восстановлении предложений?
  • Есть ли лучшие способы проверить, к какому месту принадлежат эти слова, не приписывая их ложно неправильное предложение?


Подробнее здесь: https://stackoverflow.com/questions/789 ... ilarity-ra
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Оптимизация иерархического сходства сходства адреса на большем данных о данных с DASK
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Вычисление показателя сходства слов в Python
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как рассчитать процент сходства на основе слов между двумя строками
    Anonymous » » в форуме Php
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как получить больше предложений слов от Hunspell с помощью pyhunspell
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как рассчитать встраивание слов и предложений с помощью GPT-2?
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»