使用spaCy进行韩语词形还原异常,如何获取基础词形?
韩语spaCy词形还原问题解决办法
你的操作没有错误,问题出在spaCy韩语默认模型的词形还原逻辑上——它和英语这类印欧语系模型的处理方式不一样。
spaCy的ko_core_news_sm模型输出的token.lemma_,本质是把韩语单词拆分成形态素单元(词根+词缀的拆分形式),而不是直接输出合并后的单一基础词,这就是你看到「单词+词缀」结果的原因。
要获取实际的基础词,可以试试以下几种方法:
1. 换用spaCy的形态属性获取基础词
部分场景下,token.morph.get("Lemma")能返回合并后的基础词,替换原代码里的token.lemma_即可:
# loading model nlp = spacy.load("ko_core_news_sm") # test on first sentence doc = nlp(sentences[0]) print(doc) for token in doc: print(token.morph.get("Lemma"))
注意:这个方法的效果依赖模型训练数据的覆盖度,不是所有单词都能生效。
2. 使用专门的韩语NLP工具
如果需要更稳定的词形还原效果,推荐用KoNLPy这类针对韩语优化的工具,比如Hannanum或Kkma组件:
from konlpy.tag import Hannanum hannanum = Hannanum() # 示例:获取句子中所有单词的基础形 test_sentence = sentences[0] base_forms = hannanum.morphs(test_sentence, ntags=1) print(base_forms)
3. 升级spaCy韩语大模型
ko_core_news_sm是轻量模型,词形还原的覆盖度有限。换成ko_core_news_lg大模型,基础词的输出准确率会有所提升,代码只需修改加载模型的行:
nlp = spacy.load("ko_core_news_lg")
另外补充:你贴的代码存在缩进错误,print(token.lemma_)需要缩进4个空格,否则会抛出语法错误,修正后的代码才能正常运行。
内容的提问来源于stack exchange,提问作者Anteater
相关产品推荐
相关产品推荐

