Я пытаюсь извлечь похожие части из нескольких строк.
Целью этого является попытка извлечь название книги из нескольких оптических распознаваний титульной страницы.
Это применимо только к началу строки, концы строк не нужно обрезать и могут оставаться такими, какие они есть.
Например, мои строки могут быть:
$title[0]='the history of the internet, expanded and revised';
$title[1]='the history of the internet';
$title[2]='published by xyz publisher the historv of the internot, expanded and';
$title[3]='history of the internet';
Итак, в основном я хотел бы обрезать каждую строку, чтобы она начиналась в наиболее вероятной начальной точке. Учитывая, что могут быть ошибки OCR (например, «historyv», «internot»), я подумал, что было бы лучше взять количество символов из каждого слова, что дало бы мне массив для каждой строки (так что многомерный массив) с длиной каждого слова. Затем это можно использовать для поиска текущих совпадений и обрезки начала строки до наиболее вероятного.
Строки должны быть сокращены до:
$title[0]='the history of the internet, expanded and revised';
$title[1]='the history of the internet';
$title[2]='the historv of the internot, expanded and';
$title[3]='XXX history of the internet';
Итак, мне нужно иметь возможность распознать, что «история Интернета» (7 2 3 8) - это запуск, который соответствует всем строкам, и что предшествующее «the» является наиболее вероятно, правильное видение, поскольку это происходит в> 50% строк, и поэтому начало каждой строки обрезается до «the», а заполнитель такой же длины добавляется к строке, в которой отсутствует «the».
Итак, у меня есть:
function CompareSimilarStrings($array)
{
$n=count($array);
// Get length of each word in each string >
for($run=0; $run<$n; $run++)
{
$temp=explode(' ',$array[$run]);
foreach($temp as $key => $val)
$len[$run][$key]=strlen($val);
}
for($run=0; $run<$n; $run++)
{
}
}
Как видите, я застрял в поиске текущих совпадений.
Есть идеи?