在每一行中进行 gensim 文本摘要 python
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
调用引发异常,它 returns 原文。如果这个函数没有削减它,您当然可以向该函数添加更复杂的逻辑。一些简单的例子:
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
我有一个看起来像这样的数据集(不是实际值,只是为了了解它):
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
调用引发异常,它 returns 原文。如果这个函数没有削减它,您当然可以向该函数添加更复杂的逻辑。一些简单的例子:
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