Я пытаюсь извлечь части, которые похожи из нескольких строк.
Целью этого является попытка извлечь название книги из нескольких OCRings титульного листа.
Это относится только к началу строки, концы строк не должны быть обрезаны и могут оставаться как есть.
Например, мои строки могут быть:
$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++)
{
}
}
Как видите, я застрял в поиске бегущих матчей.
Есть идеи?