Regex Fuzzy, Pemrosesan Teks, Analisis Leksikal?

Saya tidak yakin terminologi apa yang harus dicari, jadi judul saya funky... Inilah alur kerja yang saya dapatkan:

  1. Dokumen semi-terstruktur dipindai ke file. File-file tersebut OCR untuk dikirimi teks.
  2. Teks diurai menjadi objek Python
  3. Objek diserialkan (ke SQL, JSON, apa pun) untuk digunakan.

Dokumen-dokumen tersebut memiliki struktur seperti ini:

KEPALA bla bla, Halaman ###

bla

Teks sampah...

1. Teks Pertanyaan...

berlanjut hingga sekarang. A. Teks pilihan...

iklanadsf. B.Pilihan Lain...

2. Pertanyaan Lain...

Saya perlu mengekstraksi pertanyaan dan pilihan. Masalahnya adalah, karena teksnya adalah keluaran OCR, terkadang ada substitusi aneh seperti '2' -> 'Z' yang membuat ekspresi reguler biasa tidak berguna. Saya telah mencoba modul Levenshtein dan ini membantu, tetapi memerlukan pengetahuan sebelumnya tentang jarak edit yang diharapkan.

Saya tidak tahu apakah saya ingin membuat parser? seorang lexer? sesuatu yang lain? Hal ini telah membawa saya ke berbagai jalur yang menarik namun tidak relevan. Bimbingan akan sangat dihargai. Oh, juga, teksnya umumnya berasal dari domain teknis tertentu, jadi alat ejaan umum tidak begitu membantu.

Mengenai struktur dokumen, tidak ada pola visual yang jelas -- seperti jeda baris atau lekukan -- kecuali fakta bahwa "pertanyaan" biasanya dimulai dengan sebuah baris. Sampah pada dokumen dapat menyebabkan karakter muncul sebelum awal baris sebenarnya, yang berarti bahwa sesuatu di sepanjang baris r'^[0-9]+' tidak berfungsi dengan baik.

Padahal "pertanyaan" selalu dimulai dengan int, titik, dan spasi; OCR dapat mengganti karakter lain atau melewatkan karakter. Ini bukan masalah Tesseract atau Cunieform, melainkan kualitas dokumen kertas yang buruk.

#

Catatan: untuk proyek yang dimaksud, diputuskan bahwa lebih baik menyiapkan manusia untuk teks OCR daripada menghabiskan waktu untuk mengkodekan solusi. Namun, saya tetap menyukai petunjuk yang bagus.


person justinzane    schedule 27.05.2012    source sumber
comment
Anda dapat mencoba beberapa bentuk NLP di dalamnya. Kesalahan ejaan terkadang membuat NLP tidak akurat, namun seharusnya berhasil.   -  person Blender    schedule 28.05.2012
comment
Jika semua dokumen berasal dari sumber yang sama, apakah ada asumsi masuk akal bahwa kesalahan penggantian akan terus diterapkan? Jika demikian, Anda dapat memasukkannya ke dalam regex Anda.   -  person David B    schedule 28.05.2012
comment
Bisakah Anda menambahkan lebih banyak informasi tentang struktur dokumen? Dapatkah Anda menentukan tampilan bagian pertanyaan, apakah cukup jelas bagi mesin untuk mencarinya (misalnya pertanyaan dimulai setelah dua jeda baris, dan sebelum tidak ada dua jeda baris). Akhiri pertanyaan berikut ini pada baris yang sama?   -  person Robert Zaremba    schedule 28.05.2012


Jawaban (1)


Berdasarkan pemahaman dari pernyataan Anda, Anda mungkin mencoba membuat parser. Dengan persyaratan dan contoh yang tidak jelas, saya menyarankan Anda memulai dengan melihat nltk.org. Alternatif lain mungkin adalah gate.ac.uk

person Josep Valls    schedule 24.07.2012