Fuzzy Regex, การประมวลผลข้อความ, การวิเคราะห์คำศัพท์?

ฉันไม่แน่ใจว่าต้องค้นหาคำศัพท์อะไร ดังนั้นชื่อของฉันจึงดูเก๋ไก๋... นี่คือขั้นตอนการทำงานที่ฉันมี:

  1. เอกสารกึ่งโครงสร้างจะถูกสแกนเป็นไฟล์ ไฟล์ต่างๆ จะถูก OCR เป็นข้อความ
  2. ข้อความถูกแยกวิเคราะห์เป็นวัตถุ Python
  3. อ็อบเจ็กต์ถูกทำให้เป็นอนุกรม (เป็น SQL, JSON หรืออะไรก็ตาม) เพื่อใช้งาน

เอกสารมีโครงสร้างดังนี้:

HEADER บลา บลา เพจ ###

บลา

ข้อความขยะ...

1. ข้อความคำถาม...

ดำเนินต่อไปจนถึงขณะนี้ A. ข้อความตัวเลือก...

โฆษณาsadsf ข. อีกหนึ่งทางเลือก...

<แข็งแกร่ง>2. คำถามอื่น...

ฉันต้องแยกคำถามและตัวเลือกออก ปัญหาคือ เนื่องจากข้อความเป็นเอาต์พุต OCR จึงมีการใช้การแทนที่แปลกๆ เป็นครั้งคราว เช่น '2' -> 'Z' ซึ่งทำให้นิพจน์ทั่วไปธรรมดาไร้ประโยชน์ ฉันได้ลองใช้โมดูล Levenshtein แล้ว แต่ก็ช่วยได้ แต่ต้องมีความรู้มาก่อนว่าควรคาดหวังระยะการแก้ไขเท่าใด

ฉันไม่รู้ว่าฉันต้องการสร้าง parser หรือไม่? เล็กเซอร์เหรอ? อื่น ๆ อีก? สิ่งนี้นำฉันไปสู่เส้นทางที่น่าสนใจแต่ไม่เกี่ยวข้องทุกรูปแบบ คำแนะนำจะได้รับการชื่นชมอย่างมาก โอ้ นอกจากนี้ ข้อความโดยทั่วไปนั้นมาจากโดเมนทางเทคนิคเฉพาะ ดังนั้นเครื่องมือสะกดคำทั่วไปจึงไม่มีประโยชน์มากนัก

เกี่ยวกับโครงสร้างของเอกสาร ไม่มีรูปแบบการมองเห็นที่ชัดเจน เช่น การขึ้นบรรทัดใหม่หรือการเยื้อง ยกเว้นความจริงที่ว่า "คำถาม" มักจะขึ้นต้นบรรทัด ความผิดพลาดในเอกสารอาจทำให้อักขระปรากฏขึ้นก่อนจุดเริ่มต้นของบรรทัด ซึ่งหมายความว่าบางสิ่งในบรรทัด r'^[0-9]+' ไม่น่าเชื่อถือ

แม้ว่า "คำถาม" จะเริ่มต้นด้วย int เสมอ มีจุดและเว้นวรรค OCR สามารถใช้แทนอักขระอื่นหรือข้ามอักขระได้ นี่ไม่ใช่ปัญหามากนักกับ Tesseract หรือ Cunieform แต่เป็นปัญหากระดาษคุณภาพต่ำ

#

หมายเหตุ: สำหรับโปรเจ็กต์ที่เป็นปัญหา มีการตัดสินใจว่าการให้มนุษย์เตรียมข้อความ OCR นั้นดีกว่าการใช้เวลาเขียนโค้ดวิธีแก้ปัญหา ฉันยังคงชอบคำแนะนำที่ดีอย่างไรก็ตาม


person justinzane    schedule 27.05.2012    source แหล่งที่มา
comment
คุณสามารถลองใช้ NLP บางรูปแบบได้ การสะกดผิดอาจทำให้ NLP ไม่ถูกต้องในบางครั้ง แต่ ควร ได้ผล   -  person Blender    schedule 28.05.2012
comment
หากเอกสารทั้งหมดมาจากแหล่งเดียวกัน มีสมมติฐานที่สมเหตุสมผลหรือไม่ว่าจะมีการนำการทดแทนที่ผิดพลาดมาใช้อย่างต่อเนื่อง หากเป็นเช่นนั้น คุณสามารถแยกปัจจัยเหล่านั้นเข้าใน regex ของคุณได้   -  person David B    schedule 28.05.2012
comment
คุณสามารถเพิ่มข้อมูลเพิ่มเติมเกี่ยวกับโครงสร้างของเอกสารได้หรือไม่? คุณสามารถระบุลักษณะของส่วนของคำถามได้หรือไม่ มีความชัดเจนเพียงพอสำหรับเครื่องที่จะค้นหาหรือไม่ (เช่น คำถามเริ่มต้นหลังจากการขึ้นบรรทัดใหม่สองบรรทัด และก่อนที่จะไม่มีการขึ้นบรรทัดสองบรรทัด) จบคำถามต่อไปนี้เป็นบรรทัดเดียวกัน?   -  person Robert Zaremba    schedule 28.05.2012


คำตอบ (1)


จากสิ่งที่เข้าใจจากข้อความของคุณคุณอาจพยายามสร้างตัวแยกวิเคราะห์ ด้วยข้อกำหนดและตัวอย่างที่คลุมเครือที่ให้ไว้ ฉันขอแนะนำให้คุณเริ่มต้นด้วยการดูที่ nltk.org อีกทางเลือกหนึ่งอาจเป็น gate.ac.uk

person Josep Valls    schedule 24.07.2012