Skip to content

Commit

Permalink
Merge pull request #577 from YuukiToriyama/feature/ellipsis-of-aza/ma…
Browse files Browse the repository at this point in the history
…ster

省略された「字」を補うをrelease/v0.2.2にマージ
  • Loading branch information
YuukiToriyama authored Jan 13, 2025
2 parents 5e2a2df + fb1bc7f commit 259e8db
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 4 deletions.
30 changes: 28 additions & 2 deletions core/src/tokenizer/read_town.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,11 @@ impl Tokenizer<CityNameFound> {
})
.or_else(|| {
// ここまでで町名の検出に成功しない場合は、「大字」の省略の可能性を検討する
rest = format!("大字{}", rest);
find_town(&rest, &candidates)
find_town(&format!("大字{}", rest), &candidates)
})
.or_else(|| {
// ここまでで町名の検出に成功しない場合は、「字」の省略の可能性を検討する
find_town(&format!("字{}", rest), &candidates)
})
.ok_or_else(|| self.finish())?;
Ok((
Expand Down Expand Up @@ -167,6 +170,29 @@ mod tests {
assert_eq!(tokenizer.rest, "2780番地");
}

#[test]
fn read_town_字が省略されている場合() {
let tokenizer = Tokenizer {
tokens: vec![
Token::Prefecture("埼玉県".to_string()),
Token::City("南埼玉郡宮代町".to_string()),
],
rest: "東粂原111".to_string(),
_state: PhantomData::<CityNameFound>,
};
let result = tokenizer.read_town(vec![
"東姫宮一丁目".to_string(),
"字東".to_string(),
"字宮東".to_string(),
"大字東粂原".to_string(),
]);
assert!(result.is_ok());
let (town_name, tokenizer) = result.unwrap();
assert_eq!(town_name, "大字東粂原");
assert_eq!(tokenizer.tokens.len(), 3);
assert_eq!(tokenizer.rest, "111");
}

#[test]
fn read_town_失敗() {
let tokenizer = Tokenizer {
Expand Down
4 changes: 2 additions & 2 deletions tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ async fn 住居表示実施済みの住所において正式でない表記へ
}

#[tokio::test]
async fn 大字表記省略への対応テスト() {
run_data_driven_tests("./test_data/大字表記省略への対応.csv").await
async fn 字大字表記省略への対応テスト() {
run_data_driven_tests("./test_data/字・大字表記省略への対応.csv").await
}

#[tokio::test]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
address,prefecture,city,town,rest
# 「字」が省略されている場合
京都府与謝郡伊根町字日出651,京都府,与謝郡伊根町,字日出,651
京都府与謝郡伊根町日出651,京都府,与謝郡伊根町,字日出,651
京都府与謝郡与謝野町字岩滝1798番地1,京都府,与謝郡与謝野町,字岩滝,1798番地1
京都府与謝郡与謝野町岩滝1798番地1,京都府,与謝郡与謝野町,字岩滝,1798番地1
京都府舞鶴市字北吸1044番地,京都府,舞鶴市,字北吸,1044番地
京都府舞鶴市北吸1044番地,京都府,舞鶴市,字北吸,1044番地
# 「大字」が省略されている場合
東京都西多摩郡日の出町大字平井2780番地,東京都,西多摩郡日の出町,大字平井,2780番地
東京都西多摩郡日の出町平井2780番地,東京都,西多摩郡日の出町,大字平井,2780番地
埼玉県南埼玉郡宮代町大字東粂原110,埼玉県,南埼玉郡宮代町,大字東粂原,110
Expand Down

0 comments on commit 259e8db

Please sign in to comment.