2012-02-24 42 views
6

Tôi đang cố gắng trích xuất các phần tương tự với nhiều chuỗi.Trích xuất PHP Các phần tương tự từ nhiều chuỗi

Mục đích của việc này là một nỗ lực để trích xuất tiêu đề của một cuốn sách từ nhiều OCRings của trang tiêu đề.

Điều này chỉ áp dụng cho phần đầu của chuỗi, các đầu của chuỗi không cần phải cắt và có thể giữ nguyên.

Ví dụ, các chuỗi của tôi có thể là:

$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'; 

Vì vậy, về cơ bản tôi muốn cắt mỗi chuỗi để nó bắt đầu từ điểm xuất phát có thể xảy ra nhất. Xem xét rằng có thể có lỗi OCR (ví dụ: "historyv", "internot") tôi nghĩ tốt nhất là lấy số ký tự từ mỗi từ, điều này sẽ cho tôi một mảng cho mỗi chuỗi (vì vậy mảng đa chiều) với độ dài của mỗi từ. Điều này sau đó có thể được sử dụng để tìm các trận đấu đang chạy và cắt các phần đầu của chuỗi thành nhiều khả năng nhất.

Các chuỗi nên được cắt theo:

$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'; 

Vì vậy, tôi cần để có thể nhận ra rằng "lịch sử của Internet" (7 2 3 8) là thời gian mà phù hợp với tất cả các chuỗi, và rằng trước "the" có lẽ là đúng khi nhìn thấy khi nó xảy ra trong> 50% của chuỗi, và do đó đầu của mỗi chuỗi được cắt thành "the" và một trình giữ chỗ có cùng độ dài được thêm vào chuỗi bị thiếu "the".

Cho đến nay tôi đã có:

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++) 
     { 

     } 
    } 

Như bạn thấy, tôi bị mắc kẹt vào việc tìm kiếm các trận đấu chạy.

Bất kỳ ý tưởng nào?

+0

Không phải OCR có thể bỏ lỡ một từ ngắn hay nghĩ rằng một chữ cái là một biểu tượng? Những "trận đấu đang chạy" này dường như không áp dụng được với khả năng này. – erisco

+0

Nó không bỏ lỡ các từ, nó thường sẽ nhận được một lá thư sai, nhưng đó là lý do tại sao tôi đang nghĩ đến việc sử dụng số lượng chữ cái trong mỗi từ. Đôi khi nó sẽ thêm hoặc loại bỏ một chữ cái, nhưng kịch bản vẫn sẽ phù hợp với những chuỗi đó là OK. – Alasdair

+0

Tôi cũng muốn hỏi: tại sao tiêu đề không phải là "lịch sử của internet, mở rộng và"? Nó phù hợp tốt với 50% các mẫu, và một tập hợp con lớn phù hợp với các trường hợp còn lại. Có một số đảm bảo rằng mỗi mẫu có chứa tiêu đề hoàn chỉnh không? Đó là quy tắc rõ ràng duy nhất mà tôi có thể nghĩ về điều đó sẽ làm mất hiệu lực câu trả lời này. – erisco

Trả lời

Các vấn đề liên quan