ความท้าทายในการแยกวิเคราะห์ที่อยุ่จริงของ libpostal จุดประกายการถกเถียงของนักพัฒนาเกี่ยวกับข้อจำกัดในทางปฏิบัติ

ทีมชุมชน BigGo
ความท้าทายในการแยกวิเคราะห์ที่อยุ่จริงของ libpostal จุดประกายการถกเถียงของนักพัฒนาเกี่ยวกับข้อจำกัดในทางปฏิบัติ

ไลบรารี C ที่ทะเยอทะยานชื่อ libpostal ซึ่งออกแบบมาเพื่อแยกวิเคราะห์และทำให้ที่อยู่ทั่วโลกเป็นมาตรฐาน ได้จุดประกายการถกเถียงในหมู่นักพัฒนาเกี่ยวกับความท้าทายพื้นฐานของการประมวลผลที่อยู่แบบอัตโนมัติอีกครั้ง แม้ว่าไลบรารีนี้จะมีเป้าหมายจัดการกับทุกที่อยู่บนโลก แต่ข้อเสนอแนะจากชุมชนเผยให้เห็นช่องว่างที่สำคัญระหว่างความสามารถในการแยกวิเคราะห์ในทางทฤษฎีกับความซับซ้อนของที่อยู่ในโลกแห่งความเป็นจริง

ความต้องการหน่วยความจำสร้างความท้าทายในการติดตั้งใช้งาน

หนึ่งในข้อกังวลเชิงปฏิบัติที่สำคัญที่สุดที่ผู้ใช้ยกขึ้นมาคือความต้องการทรัพยากรที่มากของ libpostal ไลบรารีนี้ต้องการ RAM ประมาณ 2GB เมื่อโหลดเต็มที่เนื่องจากโมเดลข้อมูลที่ครอบคลุม สิ่งนี้สร้างความท้าทายในการติดตั้งใช้งานสำหรับแอปพลิเคชันแบบ containerized และระบบขนาดเล็ก อย่างไรก็ตาม นักพัฒนาได้พบวิธีแก้ไขโดยการคอมไพล์ไลบรารีด้วยเฉพาะโมเดลประเทศที่จำเป็นสำหรับกรณีการใช้งานของพวกเขา ซึ่งสามารถลดหน่วยความจำได้ถึง 70%

ความต้องการของระบบ:

  • หน่วยความจำ: ประมาณ 2GB RAM เมื่อโหลดข้อมูลครบถ้วน
  • การปรับปรุงหน่วยความจำ: สามารถลดลงได้สูงสุด 70% โดยการคอมไพล์เฉพาะโมเดลประเทศที่ต้องการเท่านั้น
  • แพลตฟอร์มที่รองรับ: Linux/Debian, Windows (MSVC/CMake)
  • Dependencies ที่จำเป็น: cmake, g++, ICU locale data, libcurl4-openssl-dev

กรณีขอบเขตเผยให้เห็นข้อจำกัดพื้นฐานของการแยกวิเคราะห์

ชุมชนได้เน้นย้ำสถานการณ์มากมายที่การแยกวิเคราะห์ที่อยู่แบบดั้งเดิมล้มเหลวโดยสิ้นเชิง ที่อยู่ในชนบทและที่อยู่ไม่เป็นทางการนำเสนอความท้าทายเฉพาะ เช่น คำแนะนำทิศทางอย่าง Third on right of main หรือ third house down from the barn - ที่อยู่ที่บริการไปรษณีย์สามารถส่งได้สำเร็จ แต่ระบบอัตโนมัติมีปัญหาในการประมวลผล ตัวอย่างเหล่านี้เน้นย้ำถึงปัญหาที่กว้างขึ้น: ที่อยู่ที่ยากที่สุดในการแยกวิเคราะห์มักจะเป็นที่อยู่เดียวกันที่ยากที่สุดในการจับคู่และตรวจสอบ

ป้ายกำกับของตัวแยกวิเคราะห์ที่อยู่:

  • องค์ประกอบพื้นฐาน: house_number, road, city, state, country, postcode
  • รายละเอียดอาคار: entrance, level, unit, house (ชื่ออาคาร)
  • ภูมิศาสตร์: island, suburb, state_district, world_region
  • กรณีพิเศษ: po_box, crossing (สี่แยกถนน), near (บริเวณใกล้เคียง), category (เฉพาะ Netherlands )
  • ทางเลือกสำรอง: address (องค์ประกอบที่ยังไม่ได้แก้ไข), no_number (ที่อยู่ที่ถูกต้องแต่ไม่มีเลขที่)

การถกเถียงเรื่องการตรวจสอบเทียบกับการมีอยู่จริง

การถกเถียงที่ร้อนแรงได้เกิดขึ้นเกี่ยวกับจุดประสงค์ของการตรวจสอบที่อยู่เอง นักวิจารณ์โต้แย้งว่าธุรกิจไม่สามารถตรวจสอบได้อย่างแท้จริงว่าที่อยู่มีอยู่หรือไม่ สามารถตรวจสอบได้เพียงว่าปรากฏในฐานข้อมูลที่อาจล้าสมัยหรือไม่ สิ่งนี้สร้างสถานการณ์ที่น่าหงุดหงิดที่ผู้อยู่อาศัยในอาคารใหม่พบว่าที่อยู่ที่ถูกต้องของพวกเขาถูกปฏิเสธโดยระบบที่อ้างว่าไม่มีอยู่จริง การถกเถียงมุ่งเน้นไปที่ว่าเป้าหมายควรเป็นการตรวจสอบโครงสร้างหรือเพียงแค่ให้แน่ใจว่าบริการส่งจดหมายสามารถประมวลผลที่อยู่ได้

เว็บฟอร์มควรเสนอช่องป้อนข้อมูลหลายบรรทัดที่มีป้ายกำกับว่า 'สิ่งนี้จะไปตรงบนป้ายที่อยู่ เขียนอะไรก็ได้ที่คุณต้องการ แต่เป็นปัญหาของคุณถ้ามันไม่มาถึง'

แนวทางทางเลือกได้รับความนิยม

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

คำสั่งการติดตั้ง (Linux):

 ข้อกำหนดเบื้องต้น
aptitude install cmake g++ libcurl4-openssl-dev

 สร้าง libpostal
git clone https://github.com/openvenues/libpostal
cd libpostal
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DPOSTAL_DATA_DIR=/usr/local/share/libpostal
make -j4
sudo make install
sudo ldconfig

เรื่องราวความสำเร็จในทางปฏิบัติแม้จะมีข้อจำกัด

แม้จะมีข้อกังวลในทางทฤษฎี แต่นักพัฒนาหลายคนรายงานความสำเร็จในทางปฏิบัติกับ libpostal ในสภาพแวดล้อมการผลิต ผู้ใช้ชื่นชมความสามารถในการจัดการกับกรณีขอบเขตที่แปลกประหลาดในข้อมูลของพวกเขา อธิบายว่าเป็นการสร้างการใช้งานที่ยอดเยี่ยมของโมเดลที่เล็กมากๆ ของชุดย่อยที่เฉพาะเจาะจงมากของภาษา ไลบรารีทำงานได้ดีกว่าทางเลือกที่ใช้ regex อย่างมีนัยสำคัญและให้ผลลัพธ์ที่มีโครงสร้างที่มีประโยชน์สำหรับรูปแบบที่อยู่ทั่วไปหลายรูปแบบ

การถกเถียงที่กำลังดำเนินอยู่สะท้อนถึงความท้าทายที่กว้างขึ้นในการพัฒนาซอฟต์แวร์: การสร้างสมดุลระหว่างความสมบูรณ์ในทางทฤษฎีกับประโยชน์ใช้สอยในทางปฏิบัติ แม้ว่า libpostal อาจไม่ได้แก้ปัญหาการแยกวิเคราะห์ที่อยู่ทุกปัญหา แต่มันแสดงถึงการปรับปรุงที่สำคัญเหนือทางเลือกที่ง่ายกว่าสำหรับแอปพลิเคชันในโลกแห่งความเป็นจริงหลายแอปพลิเคชัน

อ้างอิง: libpostal International street address NLP