diff --git a/Cargo.toml b/Cargo.toml index 4d2767f5..8dbd8dc9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ members = [ resolver = "2" [workspace.package] -version = "0.1.15" +version = "0.1.16" edition = "2021" description = "A Rust Library to parse japanese addresses." repository = "https://github.com/YuukiToriyama/japanese-address-parser" diff --git a/core/Cargo.toml b/core/Cargo.toml index 0e72ca7d..b9b5a935 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -24,7 +24,7 @@ eliminate-whitespaces = [] [dependencies] itertools = "0.13.0" rapidfuzz = "0.5.0" -regex = "1.10.2" +regex = { version = "1.10.6", default-features = false, features = ["std", "unicode-perl"] } serde.workspace = true reqwest = { version = "0.12.5", default-features = false, features = ["json", "rustls-tls"] } js-sys = "0.3.67" diff --git a/core/src/parser/adapter/orthographical_variant_adapter.rs b/core/src/parser/adapter/orthographical_variant_adapter.rs index 9602e922..7e28905e 100644 --- a/core/src/parser/adapter/orthographical_variant_adapter.rs +++ b/core/src/parser/adapter/orthographical_variant_adapter.rs @@ -30,10 +30,11 @@ pub trait OrthographicalVariants { const 籠: Variant; const 濱: Variant; const 祗: Variant; + const 曾: Variant; } impl OrthographicalVariants for Variant { - const の: Variant = &["の", "ノ"]; + const の: Variant = &["の", "ノ", "之"]; const ツ: Variant = &["ツ", "ッ"]; const ケ: Variant = &["ケ", "ヶ", "が", "ガ"]; const 薮: Variant = &["薮", "藪", "籔"]; @@ -60,6 +61,7 @@ impl OrthographicalVariants for Variant { const 籠: Variant = &["籠", "篭"]; const 濱: Variant = &["濱", "浜"]; const 祗: Variant = &["祗", "祇"]; + const 曾: Variant = &["曾", "曽"]; } pub struct OrthographicalVariantAdapter { diff --git a/core/src/tokenizer/read_town.rs b/core/src/tokenizer/read_town.rs index bf2d2935..0d0ea381 100644 --- a/core/src/tokenizer/read_town.rs +++ b/core/src/tokenizer/read_town.rs @@ -113,6 +113,7 @@ fn find_town(input: &str, candidates: &Vec) -> Option<(String, String)> Variant::籠, Variant::濱, Variant::祗, + Variant::曾, ], }; if let Some(result) = adapter.apply(input, candidate) { diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index a19bd227..3bca23aa 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -18,6 +18,11 @@ async fn 異字体旧字体への対応テスト() { run_data_driven_tests("./test_data/異字体旧字体への対応.csv").await } +#[tokio::test] +async fn 異字体ではない表記ゆれへの対応テスト() { + run_data_driven_tests("./test_data/異字体ではない表記ゆれへの対応.csv").await +} + #[tokio::test] async fn 丁目が算用数字の場合への対応テスト() { run_data_driven_tests("./test_data/丁目が算用数字の場合への対応.csv").await diff --git "a/tests/test_data/\347\225\260\345\255\227\344\275\223\343\201\247\343\201\257\343\201\252\343\201\204\350\241\250\350\250\230\343\202\206\343\202\214\343\201\270\343\201\256\345\257\276\345\277\234.csv" "b/tests/test_data/\347\225\260\345\255\227\344\275\223\343\201\247\343\201\257\343\201\252\343\201\204\350\241\250\350\250\230\343\202\206\343\202\214\343\201\270\343\201\256\345\257\276\345\277\234.csv" new file mode 100644 index 00000000..4c1b0914 --- /dev/null +++ "b/tests/test_data/\347\225\260\345\255\227\344\275\223\343\201\247\343\201\257\343\201\252\343\201\204\350\241\250\350\250\230\343\202\206\343\202\214\343\201\270\343\201\256\345\257\276\345\277\234.csv" @@ -0,0 +1,5 @@ +address,prefecture,city,town,rest +# 「ノ」「の」「之」の表記ゆれへの対応 +神奈川県鎌倉市山ノ内189,神奈川県,鎌倉市,山ノ内,189 +神奈川県鎌倉市山の内189,神奈川県,鎌倉市,山ノ内,189 +神奈川県鎌倉市山之内189,神奈川県,鎌倉市,山ノ内,189 diff --git "a/tests/test_data/\347\225\260\345\255\227\344\275\223\346\227\247\345\255\227\344\275\223\343\201\270\343\201\256\345\257\276\345\277\234.csv" "b/tests/test_data/\347\225\260\345\255\227\344\275\223\346\227\247\345\255\227\344\275\223\343\201\270\343\201\256\345\257\276\345\277\234.csv" index 41339422..8afeb572 100644 --- "a/tests/test_data/\347\225\260\345\255\227\344\275\223\346\227\247\345\255\227\344\275\223\343\201\270\343\201\256\345\257\276\345\277\234.csv" +++ "b/tests/test_data/\347\225\260\345\255\227\344\275\223\346\227\247\345\255\227\344\275\223\343\201\270\343\201\256\345\257\276\345\277\234.csv" @@ -81,3 +81,6 @@ address,prefecture,city,town,rest # 「竃」と「竈」の表記ゆれへの対応 静岡県御殿場市竈1032,静岡県,御殿場市,竈,1032 静岡県御殿場市竃1032,静岡県,御殿場市,竈,1032 +# 「小曾根」と「小曽根」の表記ゆれへの対応 +埼玉県熊谷市小曽根1220,埼玉県,熊谷市,小曽根,1220 +埼玉県熊谷市小曾根1220,埼玉県,熊谷市,小曽根,1220