如何使用get_word_forms批量实现反向词干提取并将所有派生词合并为单一Python列表
如何使用get_word_forms批量实现反向词干提取并将所有派生词合并为单一Python列表
看起来你在批量处理反向词干提取时遇到了两个头疼的问题:一是批量调用get_word_forms全返回空集合,二是不知道怎么把分散在不同词性下的派生词合并成一个统一的列表。我来一步步帮你搞定~
首先搞清楚为什么批量调用返回空集合
看你的原始单词列表:
my_list = [' jail', ' belief',' board',' target', ' challenge', ' command']
这里面的每个单词前面都带了空格(比如' jail'),而get_word_forms无法识别带前后空白的单词,所以才会返回全空的集合。解决这个问题的第一步,就是先把每个单词的前后空白清理掉。
完整的批量处理+合并方案
下面是可以直接运行的代码,我会逐行解释:
from get_word_forms import get_word_forms # 你的原始单词列表 my_list = [' jail', ' belief',' board',' target', ' challenge', ' command'] # 1. 清理每个单词的前后空白,得到干净的单词列表 cleaned_words = [word.strip() for word in my_list] # 2. 初始化一个集合来收集所有派生词(集合自动帮我们去重,避免重复单词) all_derivative_words = set() # 3. 批量遍历每个干净的单词,提取所有派生词 for word in cleaned_words: # 获取当前单词的所有词性形式 form_dict = get_word_forms(word) # 遍历字典里的所有词性集合(n/a/v/r),把里面的单词都添加到总集合中 for pos_forms in form_dict.values(): all_derivative_words.update(pos_forms) # 4. 如果需要列表格式,把集合转换成列表 final_result = list(all_derivative_words) # 打印结果看看 print(final_result)
代码说明
- 清理单词:用
word.strip()去掉每个单词的前后空格,这是解决空集合问题的核心——只有干净的单词才能被get_word_forms正确识别。 - 用集合去重:同一个单词可能同时属于名词和动词(比如
command既在名词集合里,也在动词集合里),用集合可以自动帮我们去掉这些重复项。 - 合并所有词性:遍历
get_word_forms返回的字典值(也就是各个词性的单词集合),用update()把所有单词都合并到总集合中,不管它是名词、动词还是其他词性。
效果验证
比如处理你提到的command时,这段代码会把名词下的commandant、commanders等,以及动词下的commanded、commanding等所有派生词都收集进来,同时自动去掉重复的command和commands。
这样你就不用再手动逐个处理200个单词啦,一次性就能得到所有派生词的无重复列表~
备注:内容来源于stack exchange,提问作者JodeCharger100
相关产品推荐
相关产品推荐

