我正在尝试将textacy.extract.subject_verb_object_triples
函数应用于pandas df列。该函数在应用时将返回空的生成器对象,而不是subject_verb_object_triples:
sp500news3['title'].apply(lambda x: textacy.extract.subject_verb_object_triples)
或
sp500news3['title'].apply(textacy.extract.subject_verb_object_triples)
我也尝试过:
import spacy
import textacy
def extract_SVO1(text):
new_doc = textacy.extract.subject_verb_object_triples(text)
new_list = list(new_doc)
text = new_list
sp500news3['title'] = sp500news3['title'].apply(extract_SVO1)
如何在dataframe列上实现该函数以返回正确的函数输出?
答案 0 :(得分:0)
原因是textacy.extract.subject_verb_object_triples
返回一个生成器,必须将其转换为某种可迭代的类型。您的两种方法都可行,但需要进行一些修改。
第一种方法:消耗生成器
sp500news3['title'].apply(lambda x: textacy.extract.subject_verb_object_triples).apply(pd.Series)
第二种方式:编写一个单独的函数来应用
def extract_SVO1(text):
new_doc = textacy.extract.subject_verb_object_triples(text)
new_list = list(new_doc)
return new_list