如何预处理文本以删除停用词?
How to preprocess a text to remove stopwords?
我想删除停用词列表,即
中的那些
from gensim.parsing.preprocessing import STOPWORDS
print(STOPWORDS)
在 gensim 中,使用 remove_stopwords
function 应该非常简单。
我读取文本并删除停用词的代码如下:
def read_text(text_path):
text = []
with open(text_path) as file:
lines = file.readlines()
for index, line in enumerate(lines):
text.append(simple_preprocess(remove_stopwords(line)))
return text
text = read_text('/content/text.txt')
text = [x for x in text if x]
text[:3]
这是我得到的输出,其中包含诸如“我们”或“但是”之类的词,这些词应该从 original text 中删除,例如“the”已从第一句中正确删除。我很困惑...我在这里错过了什么?
[['clinical', 'guidelines', 'management', 'ibd'],
['polygenetic',
'risk',
'scores',
'add',
'predictive',
'power',
'clinical',
'models',
'response',
'anti',
'tnfα',
'therapy',
'inflammatory',
'bowel',
'disease'],
['anti',
'tumour',
'necrosis',
'factor',
'alpha',
'tnfα',
'therapy',
'widely',
'management',
'crohn',
'disease',
'cd',
'ulcerative',
'colitis',
'uc',
'however',
'patients',
'respond',
'induction',
'therapy',
'patients',
'lose',
'response',
'time',
'to',
'aid',
'patient',
'stratification',
'polygenetic',
'risk',
'scores',
'identified',
'predictors',
'response',
'anti',
'tnfα',
'therapy',
'we',
'aimed',
'replicate',
'association',
'polygenetic',
'risk',
'scores',
'response',
'anti',
'tnfα',
'therapy',
'independent',
'cohort',
'patients',
'establish',
'clinical',
'validity']]
文本(完整文件可用here)
IBD 管理临床指南。
多基因风险评分不会增加炎症性肠病抗 TNFα 治疗反应的临床模型的预测能力。
抗肿瘤坏死因子 α (TNFα) 疗法广泛用于克罗恩病 (CD) 和溃疡性结肠炎 (UC) 的治疗。然而,多达三分之一的患者对诱导治疗没有反应,另外三分之一的患者随着时间的推移失去反应。为了帮助患者分层,多基因风险评分已被确定为对抗 TNFα 治疗反应的预测因子。我们的目的是在一个独立的患者队列中复制多基因风险评分与抗 TNFα 治疗反应之间的关联,以确定其临床有效性。
您的 remove_stopwords() 函数区分大小写,并且不会忽略标点符号。例如,'However' 不在 STOPWORDS 中,但 'however' 在中。您应该先调用 simple_preprocess() 函数。这应该有效:
from gensim.parsing.preprocessing import STOPWORDS
from gensim.parsing.preprocessing import remove_stopword_tokens
def read_text(text_path):
text = []
with open(text_path) as file:
lines = file.readlines()
for index, line in enumerate(lines):
tokens = simple_preprocess(line)
text.append(remove_stopword_tokens(tokens,stopwords=STOPWORDS))
return text
我想删除停用词列表,即
中的那些from gensim.parsing.preprocessing import STOPWORDS
print(STOPWORDS)
在 gensim 中,使用 remove_stopwords
function 应该非常简单。
我读取文本并删除停用词的代码如下:
def read_text(text_path):
text = []
with open(text_path) as file:
lines = file.readlines()
for index, line in enumerate(lines):
text.append(simple_preprocess(remove_stopwords(line)))
return text
text = read_text('/content/text.txt')
text = [x for x in text if x]
text[:3]
这是我得到的输出,其中包含诸如“我们”或“但是”之类的词,这些词应该从 original text 中删除,例如“the”已从第一句中正确删除。我很困惑...我在这里错过了什么?
[['clinical', 'guidelines', 'management', 'ibd'],
['polygenetic',
'risk',
'scores',
'add',
'predictive',
'power',
'clinical',
'models',
'response',
'anti',
'tnfα',
'therapy',
'inflammatory',
'bowel',
'disease'],
['anti',
'tumour',
'necrosis',
'factor',
'alpha',
'tnfα',
'therapy',
'widely',
'management',
'crohn',
'disease',
'cd',
'ulcerative',
'colitis',
'uc',
'however',
'patients',
'respond',
'induction',
'therapy',
'patients',
'lose',
'response',
'time',
'to',
'aid',
'patient',
'stratification',
'polygenetic',
'risk',
'scores',
'identified',
'predictors',
'response',
'anti',
'tnfα',
'therapy',
'we',
'aimed',
'replicate',
'association',
'polygenetic',
'risk',
'scores',
'response',
'anti',
'tnfα',
'therapy',
'independent',
'cohort',
'patients',
'establish',
'clinical',
'validity']]
文本(完整文件可用here)
IBD 管理临床指南。
多基因风险评分不会增加炎症性肠病抗 TNFα 治疗反应的临床模型的预测能力。 抗肿瘤坏死因子 α (TNFα) 疗法广泛用于克罗恩病 (CD) 和溃疡性结肠炎 (UC) 的治疗。然而,多达三分之一的患者对诱导治疗没有反应,另外三分之一的患者随着时间的推移失去反应。为了帮助患者分层,多基因风险评分已被确定为对抗 TNFα 治疗反应的预测因子。我们的目的是在一个独立的患者队列中复制多基因风险评分与抗 TNFα 治疗反应之间的关联,以确定其临床有效性。
您的 remove_stopwords() 函数区分大小写,并且不会忽略标点符号。例如,'However' 不在 STOPWORDS 中,但 'however' 在中。您应该先调用 simple_preprocess() 函数。这应该有效:
from gensim.parsing.preprocessing import STOPWORDS
from gensim.parsing.preprocessing import remove_stopword_tokens
def read_text(text_path):
text = []
with open(text_path) as file:
lines = file.readlines()
for index, line in enumerate(lines):
tokens = simple_preprocess(line)
text.append(remove_stopword_tokens(tokens,stopwords=STOPWORDS))
return text