簡體   English   中英

在每一行python中做gensim文本摘要

[英]Doing gensim text summarization in each row python

我有一個看起來像這樣的數據集(不是實際值,只是為了了解它):

id  text                                      group 
1   what is the difference and why is it ...  2
2   let me introduce myself, first.           1 

“文本”列的長度可以從一個句子到多個句子。 我想要做的是匯總行中的每個文本並將匯總的文本保存在新列中。 我正在使用 gensim 進行總結。

我想要的輸出如下,內容請無視。

id  text                                     group  text_summary 
1   what is the difference and why is it ...  2     the difference between object a and b 
2   let me introduce myself, first.           1     let me introduce myself, first.

下面是我使用的代碼,但出現以下錯誤。

import gensim 
from gensim.summarization import summarize 
from gensim.summarization import keywords 

for i in range(0, df.shape[0]):
    text = df.iloc[i]['Answers']
    if len(text) > 1:
        df.loc[i, 'summary_answer'] = summarize(text)
    else: 
        df.loc[i, 'summary_answer'] = text

在此處輸入圖片說明

我理解這個問題,但我的if/else語句在這種情況下似乎不起作用。

您的代碼應該更像這樣:

def summary_answer(text):
    try:
        return summarize(text)
    except ValueError:
        return text
df['summary_answer'] = df['Answers'].apply(summary_answer)

編輯:上面的代碼是解決原始錯誤的快速代碼,如果summarize調用引發異常,則返回原始文本。 如果這個函數沒有刪減它,你當然可以向函數添加更復雜的邏輯。 一些簡單的例子:

def summary_answer(text):
    try:
        if not isinstance(text,str):#data of wrong type
            return 'not text'
        ans = summarize(text)
        if len(ans.split())>3:#summary must be longer than 3 words
            return ans
    except ValueError:
        pass
    return text

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM