roshan-research / hazm

Persian NLP Toolkit
https://www.roshan-ai.ir/hazm/
MIT License
1.19k stars 180 forks source link

پسوند فعل | verb postfix #321

Open AramTaravat opened 6 months ago

AramTaravat commented 6 months ago

سلام و تشکر برای ابزار خوبتون من میخواستم پسوند یک فعل را پیدا کنم ولی نمیدونستم اصلا امکان این وجود داره یا نه مثلا برای فعل می‌رویم، 'یم' بهم داده بشه. چند تا مثال دیگه به این شکل هست: خواهم نوشت => م می‌نویسند => ند آیا امکان اینکار برای زبان فارسی وجود داره و با هضم میشه این کار رو انجام داد؟ اگر پاسخ بدید خیلی ممنون میشم

sir-kokabi commented 6 months ago

سلام. شما می‌تونید ابتدا با لماتایزر، بن مضارع رو در بیارید و بعد با جستجوی بن مضارع در داخل فعل به هدفتون برسید. افعال داخل متن هم می‌تونید با POSTagger پیدا کنید.

from hazm import Lemmatizer, POSTagger, WordTokenizer
word="می‌نویسند"
lemma=Lemmatizer().lemmatize(word).split("#")[1] #نویس
verb_suffix = word[word.find(lemma) + len(lemma):]
print(verb_suffix) #ند
AramTaravat commented 6 months ago

ممنون از پاسختون. بله منم همینکار رو میکردم تا اینکه رسیدم به فعل "می‌رویم" که برای این فعل درست عمل نمیکنه. و گفتم شاید راه‌حل دیگه‌ای باشه word="می‌رویم" Lemmatizer().lemmatize(word).split("#") #['رست', 'روی'] .... print(verb_suffix) #م البته فکر میکنم این موارد شاید کم پیش بیاد و بهتر باشه که دستی براشون پسوند را مشخص کنم

sir-kokabi commented 6 months ago

خب اینجا یک مشکلی در لماتایزر وجود داره که باید رفع بشه. در صورت‌های فعلی مثل این که هم می‌تونه منظور «روییدن» باشه و هم «رفتن» باید ریشه‌یابی برای هر دو فعل انجام بشه. البته همونطور که گفتید فکر می‌کنم تعداد این نوع فعل‌ها در زبان فارسی خیلی کم باشه.

AramTaravat commented 6 months ago

ممنونم