У меня есть этот фрейм данных, содержащий строки строк и идентификаторы.Я называю это историей.
history
ID string
1.1 a b b b c c s d s ....
1.2 a b b b b c s s d ....
2.1 a c c s s d b d b ....
2.2 a c s c s d b d b ....
3.1 a z z x d b d d f ....
3.2 a z x z d d f b d ....
...
Строки в каждом ряду довольно длинные.Идентификаторы, принадлежащие одному и тому же номеру, например 1.1 и 1.2, имеют похожие строки с небольшими отличиями1.1 и 2.2, хотя будут иметь большие различия между ними.В исходных данных около 70 строк.
test
string
a c c c s s d b d b....
Моя цель состоит в том, чтобы, если у меня есть другой фрейм данных, содержащий строку, которой нет в «истории», я хотел бы найти, какой идентификатор в «истории» ему подходит лучше всего.Я знаю, что есть много методов сопоставления текста, которые могут сделать это.Моя проблема связана с тем, что я не могу сопоставить всю строку в «тесте» с «историей».
Весь смысл в том, чтобы узнать, могу ли я определить, к какому идентификатору относится строка в «тесте», не сопоставляя всю строку.Одна идея, о которой я подумал, - отфильтровать историю, когда мы делаем больше совпадений в тесте.
Мой ожидаемый результат: здесь я предполагаю, что совпадение начинается с первого символа строки в «тесте» с первыми символами строк в «истории».И мы идем персонаж за персонажем.Оба эти предположения не являются фиксированными.Также длины строк в «history» и «test» могут быть разными.
Первый символ «a» из «test» соответствует всем в «history».Так что в этом случае фильтрации не происходит.
test
string
a
результат:
history
ID string
1.1 a b b b c c s d s ....
1.2 a b b b b c s s d ....
2.1 a c c s s d b d b ....
2.2 a c s c s d b d b ....
3.1 a z z x d b d d f ....
3.2 a z x z d d f b d ....
...
Второй символ "c".Здесь, чтобы убедиться, что мы не совпадаем со случайным «c» из «истории», я думаю, что установление правила будет полезным.Нечто похожее происходит, если «а» то «с».
test
string
a c
результат:
history
ID string
2.1 a c c s s d b d b ....
2.2 a c s c s d b d b ....
Это уже сузило совпадение с историческими ID 2.1 и 2.2.Честно говоря, мы можем даже остановиться здесь, как я уже сказал, прежде чем различия между этими двумя будут крошечными.Итак, в заключение, как только история была отфильтрована до одного идентификатора, она должна вывести, какой идентификатор наилучшим образом соответствовал «тестовой» строке.