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

如何在Pandas中用isin统计拆分句子词频并计算句子价值

解决句子词汇分值求和问题

嘿,我来帮你搞定这个文本分析里的句子价值量化需求!针对你的问题,我会结合isin方法来实现,同时也给你一个更简洁的替代方案。

核心思路

我们需要把每个句子拆分成单词,筛选出在词汇分值表(df_w)里的词汇,然后把它们对应的分值加起来。这里用isin可以准确判断哪些单词是我们需要统计的。

步骤1:预处理词汇表

先把df_w转换成字典,这样查找词汇对应的分值会更高效:

word_value_map = df_w.set_index('word')['value'].to_dict()

步骤2:用isin实现分值求和

我们可以写一个函数,专门处理单句的分值计算,其中用isin来筛选有效词汇:

def calculate_sentence_value(sentence):
    # 拆分句子为单词列表
    words = sentence.split()
    # 用isin生成布尔数组,标记哪些单词在词汇表里
    is_valid_word = pd.Series(words).isin(df_w['word'])
    # 遍历单词和对应的标记,累加有效词汇的分值
    total_score = 0
    for word, valid in zip(words, is_valid_word):
        if valid:
            total_score += word_value_map[word]
    return total_score

步骤3:应用到句子表生成新列

把函数应用到df_s的sentence列,生成新的total_value列:

df_s['total_value'] = df_s['sentence'].apply(calculate_sentence_value)

更简洁的替代写法

如果觉得上面的函数有点繁琐,也可以用lambda表达式结合字典的get方法(默认返回0,相当于自动忽略不在词汇表的单词),这样不用显式调用isin也能实现需求:

df_s['total_value'] = df_s['sentence'].apply(
    lambda x: sum(word_value_map.get(word, 0) for word in x.split())
)

最终结果

运行代码后,df_s会变成这样:

sentence  total_value
0        hello life if good           12
1  i sell this at a high price          77
2        i sell or you sell           90

完美覆盖了你的需求:重复词汇(比如第三个句子里的两次sell)也会被正确累加分值,每个句子的总分计算准确。

内容的提问来源于stack exchange,提问作者Ben.T

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:43:41