【发布时间】:2018-05-25 03:23:20
【问题描述】:
我只是在考虑使用数据集模块之外的数据的文本教程。我从数据框中获取了一些文本数据,并将其存储为字符串变量以供工作。
def mergeText(df):
content = ''
for i in df['textColumn']:
content += (i + '. ' )
#print(content)
return content
txt = mergeText(df)
我使用过 spacy 一点,我知道这是创建 doc 对象的标准方法
nlp = spacy.load('en')
doc1 = nlp(txt)
print(type(doc1))
哪个输出
class 'spacy.tokens.doc.Doc
所以我应该能够按照文档所述从这个 doc 文件生成语料库
corpus = textacy.corpus.Corpus('en', docs=doc1)
但即使我将正确的类型传递给函数,我也会收到此错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-c6f568014162> in <module>()
----> 1 corpus = textacy.corpus.Corpus('en', docs=doc1, metadatas=None)
~/anaconda3/envs/nlp/lib/python3.6/site-packages/textacy/corpus.py in __init__(self, lang, texts, docs, metadatas)
156 else:
157 for doc in docs:
--> 158 self.add_doc(doc)
159
160 def __repr__(self):
~/anaconda3/envs/nlp/lib/python3.6/site-packages/textacy/corpus.py in add_doc(self, doc, metadata)
337 msg = '`doc` must be {}, not "{}"'.format(
338 {Doc, SpacyDoc}, type(doc))
--> 339 raise ValueError(msg)
340
341 #################
ValueError: `doc` must be {<class 'textacy.doc.Doc'>, <class 'spacy.tokens.doc.Doc'>}, not "<class 'spacy.tokens.token.Token'>"
我曾尝试以同样的方式创建一个 textacy 对象,但没有成功
doc = textacy.Doc(txt)
print(type(doc))
<class 'spacy.tokens.doc.Doc'>
我还尝试将文本参数用于语料库,将原始文本传递给它,但这会输出
corpus[:10]
[Doc(1 tokens; "D"),
Doc(1 tokens; "e"),
Doc(1 tokens; "a"),
Doc(1 tokens; "r"),
Doc(1 tokens; " "),
Doc(1 tokens; "C"),
Doc(1 tokens; "h"),
Doc(1 tokens; "r"),
Doc(1 tokens; "i"),
Doc(1 tokens; "s")]
关于如何解决这个问题的任何想法?
编辑 为了从多行中获取文档并将其传递给语料库,这里是我正在为线程工作的数据框
chat1 = df[(df['chat_hash']=='121418-456986')]
因此,每个文本的文本都存储在“文本”列下,如有必要,每个文本都可以通过扬声器列绑定到扬声器。
目前我正在查看capitol words 示例,但尚不完全清楚如何使用数据框进行拆分。
records = cw.records(speaker_name={'Hillary Clinton', 'Barack Obama'})
text_stream, metadata_stream = textacy.fileio.split_record_fields(records, 'text')
corpus = textacy.Corpus('en', texts=text_stream, metadatas=metadata_stream)
corpus
在这种情况下会不会设置记录作为聊天哈希的过滤器
thread = df[(df['chat_hash']=='121418-456986')]
text_stream, metadata_stream = textacy.fileio.split_record_fields(thread, 'text')
corpus = textacy.Corpus('en', texts=text_stream, metadatas=metadata_stream)
corpus
【问题讨论】:
标签: python-3.x pandas corpus spacy textacy