我想创建一个工具来帮助人们进行动词变位,特别是波兰语。
\n给定一个不定式动词,例如。mie\xc4\x87(拥有)是否可以使用 SpaCy 检索该动词的第一人称和第二人称形式,在本例中为mam(我有)和masz(你有)?
\npl_core_news_sm我可以使用下载并加载波兰模型spacy.load。准确地将mam和masztoken.lemma_识别为相同的引理,并且“人”信息可在- 但有没有办法进行反向查找,即给定不定式找到共轭形式?token.morph
我已经开始查看该类Matcher并创建一个类似的模式[{"LEMMA": infinitive_verb}],但我不知道如何进行这种查找。
我不是波兰人,但据我所知,用于波兰语处理的一个流行库是morfeusz2,您可以morfeusz2非常轻松地与 SpaCy 结合使用。
所以,让我用一个例子来解释它,正如我所说,我的代码将使用 themorfeusz2来分析不定式动词并获取动词的基本形式(或引理),之后,它使用为 SpaCy 的 Matcher 类创建这个简洁的模式它会继续使用 SpaCy 将该模式与不定式动词进行匹配。最后,它从匹配的标记中获取这些共轭形式。
好的,首先像这样安装:
\npip install morfeusz2 \nRun Code Online (Sandbox Code Playgroud)\n这是一个简单的例子:
\nimport spacy\nimport morfeusz2\n\n#you can load polish language model in SpaCy like this\nnlp = spacy.load("pl_core_news_sm")\n\nmorfeusz = morfeusz2.Morfeusz()\n\n#your verb\ninfinitive_verb = "mie\xc4\x87"\n\n#analyze infinitive verb using Morfeusz2\nanalysis = morfeusz.analyse(infinitive_verb)\n\nbase_form = analysis[0][2][1]\n\npattern = [{"LEMMA": base_form}]\n\ndoc = nlp(infinitive_verb)\nmatcher = spacy.matcher.Matcher(nlp.vocab)\nmatcher.add("VerbConjugation", [pattern])\nmatches = matcher(doc)\n\nconjugated_forms = []\nfor match_id, start, end in matches:\n matched_token = doc[start:end]\n conjugated_forms.append(matched_token.text)\n\n# conjugated forms\nprint(conjugated_forms)\nRun Code Online (Sandbox Code Playgroud)\npowodzenia,m\xc3\xb3j przyjacielu!
\n| 归档时间: |
|
| 查看次数: |
255 次 |
| 最近记录: |