You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拥有基础词与派生词两个DataFrame,如何输入基础词输出对应派生词?

实现基础词到对应派生词的查询方案

核心思路

要实现基础词和派生词的精准对应,关键是建立两者的明确映射关系——要么预先构建包含基础词与派生词的对应表,要么根据构词规则从派生词中提取基础词,再进行匹配。

方法一:预先构建映射表(最可靠)

如果已经明确每个基础词对应的派生词,直接创建包含两列的映射DataFrame,之后通过基础词精准筛选:

import pandas as pd

# 基础词DataFrame
df_base = pd.DataFrame({'base_word': ['hubung', 'cinta', 'ajar', 'oles', 'sejajarkan']})
# 派生词DataFrame
df_affixed = pd.DataFrame({'nama': ['menghubung', 'mencinta', 'mengajar', 'mengoles','menyejajarkan']})

# 构建基础词-派生词映射表
df_mapping = pd.DataFrame({
    'base_word': df_base['base_word'].tolist(),
    'affixed_word': df_affixed['nama'].tolist()
})

# 输入基础词查询对应派生词
input_base = 'ajar'
# 提取结果(多个匹配用tolist(),单个用values[0])
result = df_mapping[df_mapping['base_word'] == input_base]['affixed_word'].values[0]
print(result)  # 输出: mengajar

方法二:基于构词规则提取基础词(适用于规则化派生词)

如果派生词是通过固定前缀/后缀生成的(比如印尼语的me-/meng-前缀),可以用正则表达式从派生词中提取基础词,再建立关联:

import pandas as pd
import re

# 派生词DataFrame
df_affixed = pd.DataFrame({'nama': ['menghubung', 'mencinta', 'mengajar', 'mengoles','menyejajarkan']})

# 定义提取基础词的函数(适配印尼语me-系列前缀规则)
def extract_base_word(word):
    # 匹配meng-开头(对应基础词以元音a/i/u/e/o开头)
    meng_match = re.match(r'meng([aiueo].+)', word)
    if meng_match:
        return meng_match.group(1)
    # 匹配men-开头(对应基础词以辅音开头)
    men_match = re.match(r'men([^aiueo].+)', word)
    if men_match:
        return men_match.group(1)
    # 匹配meny-开头(对应基础词以s开头)
    meny_match = re.match(r'meny(.+)', word)
    if meny_match:
        return 's' + meny_match.group(1)
    # 其他情况直接返回原词
    return word

# 给派生词DataFrame添加基础词列
df_affixed['base_word'] = df_affixed['nama'].apply(extract_base_word)

# 输入基础词查询
input_base = 'ajar'
result = df_affixed[df_affixed['base_word'] == input_base]['nama'].tolist()
print(result)  # 输出: ['mengajar']

原代码的问题说明

你之前的str.contains('ajar')是模糊子串匹配,会返回所有包含ajar字符的派生词,无法保证是精准的基础词对应(比如如果有派生词ajarxyz也会被匹配)。而上面的方法通过明确映射或规则提取,实现了基础词与派生词的精准对应。

内容的提问来源于stack exchange,提问作者Muhammad Rusli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:01:35