From 8c846690b9627e62b80ca68e2d4c888319ab88dd Mon Sep 17 00:00:00 2001 From: Miyamizu-MitsuhaSang <2510681107@qq.com> Date: Mon, 22 Sep 2025 19:27:11 +0800 Subject: [PATCH] =?UTF-8?q?all=5Fkana.py|autocomplete.py:=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=9F=A5=E8=AF=A2list=E5=8C=B9=E9=85=8D=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/utils/all_kana.py | 7 ++++--- app/utils/autocomplete.py | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/utils/all_kana.py b/app/utils/all_kana.py index 9be9e6f..cbc9393 100644 --- a/app/utils/all_kana.py +++ b/app/utils/all_kana.py @@ -1,7 +1,6 @@ import unicodedata import jaconv -import pykakasi from pykakasi import kakasi # ---- 全局初始化(只做一次)---- @@ -9,6 +8,7 @@ _kakasi = kakasi() _kakasi.setMode("J", "H") # Kanji -> Hiragana(依据词典近似读音) _kakasi.setMode("K", "H") # Katakana -> Hiragana _kakasi.setMode("H", "H") # Hiragana -> Hiragana(不变) +_kakasi.setMode("a", "H") # Romaji -> Hiragana # 可选:保留原文空格/标点;如需去除空格可自行处理 _converter = _kakasi.getConverter() @@ -25,6 +25,7 @@ def all_in_kana(text: str) -> str: # 2) 先做假名统一(片假名 -> 平假名;半角片假名也会被 NFKC 规范化) # 这一步对只有假名的输入能直接得到平假名 + s = jaconv.alphabet2kata(s) s = jaconv.kata2hira(s) # 3) 用 pykakasi 将汉字(以及残留的片假名)转换为“平假名读音” @@ -36,9 +37,9 @@ def all_in_kana(text: str) -> str: hira = jaconv.kata2hira(hira) # 5) 可选清洗:去掉多余空白(如果你不想保留空格) - # hira = "".join(hira.split()) + hira = "".join(hira.split()) return hira if __name__ == '__main__': - print(all_in_kana('能力')) \ No newline at end of file + print(all_in_kana('ai')) \ No newline at end of file diff --git a/app/utils/autocomplete.py b/app/utils/autocomplete.py index d0257c4..45ee24e 100644 --- a/app/utils/autocomplete.py +++ b/app/utils/autocomplete.py @@ -1,8 +1,8 @@ import asyncio +from typing import List, Literal, Tuple from tortoise import Tortoise from tortoise.expressions import Q -from typing import List, Literal, Tuple from app.models import WordlistFr, WordlistJp from app.schemas.search_schemas import SearchRequest @@ -57,7 +57,9 @@ async def suggest_autocomplete(query: SearchRequest, limit: int = 10) -> List[st query_word = all_in_kana(query.query) exact = await ( WordlistJp - .get_or_none(text=query.query) + .get_or_none( + text=query.query + ) .only("text", "freq") ) if exact: