【发布时间】:2021-12-14 14:12:02
【问题描述】:
我目前正在处理大量文章(大约 205,000 篇),这需要构建术语文档矩阵。
我环顾四周,似乎 sklearn 提供了一种有效的构建方法。但是,当将建议的代码应用于一小部分文档(作为测试)时,我发现包含连字符的单词被分割,连字符作为分隔符。这是不可取的,因为我正在处理葡萄牙语文档,其中连字符很常见,因为有大量的复合名词。我想了解如何生成一个术语文档矩阵,该矩阵仅包含我的语料库的所有标记作为列,其中只有空格用作标记之间的分隔符(如果单词包含连字符,则应考虑作为单个令牌)。
代码如下:
index=['doc 1','doc 2','doc 3','doc 4']
docs=['como você está', 'guarda-chuva!','covid-19 piorou','teto-de-gastos do tesouro']
df = pd.DataFrame(list(zip(index, docs)))
df.columns = ['index', 'docs']
from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer()
vects = vect.fit_transform(df.docs)
td = pd.DataFrame(vects.todense()).iloc[:len(df)]
td.columns = vect.get_feature_names()
term_document_matrix = td.T
term_document_matrix.columns = ['Doc '+str(i) for i in range(1, len(df)+1)]
term_document_matrix['total_count'] = term_document_matrix.sum(axis=1)
打印矩阵时,我发现“teto-de-gastos”被转换为“teto”、“de”、“gastos”,这是我不想要的。有关如何解决此连字符问题的任何建议?
【问题讨论】:
-
这个答案对您有帮助吗?
标签: python scikit-learn nlp term-document-matrix