ฉันกำลังทำโปรเจ็กต์ที่มีขั้นตอนหนึ่งคือการแยกข้อความของบทความทางวิทยาศาสตร์ออกเป็นประโยค สำหรับสิ่งนี้ ฉันใช้ textrank
ซึ่งฉันเข้าใจว่ามันมองหา .
หรือ ?
หรือ !
ฯลฯ เพื่อระบุจุดสิ้นสุดของประโยคของโทเค็นไนซ์
ปัญหาที่ฉันพบคือประโยคที่ลงท้ายด้วยจุดตามด้วยหมายเลขอ้างอิงโดยตรง (ซึ่งอาจอยู่ในวงเล็บด้วย) ตัวอย่างด้านล่างแสดงถึงรูปแบบที่ฉันระบุและรวบรวมจนถึงขณะนี้
xx = c ("hello.1 World", "hello.1,2 World", "hello.(1) world", "hello.(1,2) World", "hello.[1,2] World", "hello.[1] World")
ฉันค้นหามาบ้างแล้วและดูเหมือนว่าการตรวจจับขอบเขตของประโยคนั้นเป็นศาสตร์ที่มีความซับซ้อนและเฉพาะเจาะจงโดเมน
วิธีเดียวที่ฉันคิดได้ว่าจะแก้ไขปัญหานี้ (อย่างน้อยในกรณีของฉัน) คือการเขียน regex ที่เพิ่มช่องว่างหลังจุดเพื่อให้ textrank
สามารถระบุได้โดยใช้รูปแบบปกติ
ข้อเสนอแนะใด ๆ ว่าจะทำอย่างไรกับ regex ใน R? ฉันพยายามค้นหาทางออนไลน์อย่างดีที่สุดแต่ก็ไม่พบคำตอบ
คำถามนี้อธิบายวิธีการเพิ่มช่องว่างระหว่างตัวพิมพ์เล็กตามด้วยตัวพิมพ์ใหญ่ เพิ่มช่องว่างระหว่างตัวอักษรสองตัวในสตริงใน R ในกรณีของฉัน ฉันเชื่อว่าจะต้องเพิ่มช่องว่างระหว่างตัวอักษรตามด้วยจุดและตัวเลข /วงเล็บ
ผลลัพธ์ที่คาดหวังของฉันคือ:
("hello. 1 World", "hello. 1,2 World", "hello. (1) world", "hello. (1,2) World", "hello. [1,2] World", "hello. [1] World")
ขอบคุณ
\.(?=[[(]?\d+)
แทนที่แต่ละรายการที่ตรงกันด้วย.
เช่น จุดที่ตามด้วยช่องว่าง - person Gurmanjot Singh   schedule 05.03.2021\D
ดังนั้นฉันจึงไม่เพิ่มช่องว่างให้กับจุดทศนิยม\D\.(?=[[(]?\d+)
regex101.com/r/vffKdU/1 - person Bahi8482   schedule 05.03.2021