【发布时间】:2019-09-04 13:14:44
【问题描述】:
我有一个包含 50 个子文件夹的数据集,每个子文件夹都有 20-30 个没有扩展名的文件。我想要做的是标记每个子文件夹的文件中的文本,并将其写入带有子文件夹名称的文件。例如; 假设 subfolder1 有 25 个文件,我想将这 25 个文件一起标记,并将其写入名为“subfolder1”的文件。我想对主文件夹中的所有子文件夹都这样做。
我已经尝试了这个code 的一些片段,但它给出了 PermissionError,因为它无法读取文件夹。
mainfolder="path\\to\\mainfolder"
def ls(path):
return [os.path.join(path, item) for item in os.listdir(path)]
def load_file_sents(path):
return [sent.lower()
for sent in tokenize.sent_tokenize(open(path).read())]
def load_collection_sents(path):
sents = []
for f in ls(path):
sents.extend(load_file_sents(f))
return sents
def get_sentences(path):
""" loads sentences from the given path (collection or file) """
sents = []
try:
# treat as a single file
open(path).read()
sents = load_file_sents(path)
except IOError:
# it's a directory!
sents = load_collection_sents(path)
return sents
def get_toks(path):
return [tokenize.word_tokenize(sent) for sent in get_sentences(path)]
get_toks(mainfolder)
这是它给出的错误:
PermissionError Traceback (most recent call last)
<ipython-input-52-a6f316499b2c> in get_sentences(path)
37 # treat as a single file
---> 38 open(path).read()
39 sents = load_file_sents(path)
PermissionError: [Errno 13] Permission denied:
我尝试将前两个函数合并为一个,并确保它会读取文件,但这次它只返回第一个子文件夹的第一个文件的令牌。如果您知道如何解决此问题或有更好的方法,我们将不胜感激!谢谢。
【问题讨论】:
-
tokenizing文件中的文本是什么意思? -
喜欢将文档拆分成单词和句子。 ['like', 'splitting', 'the', 'documents', 'into', 'words', 'and', 'sentences'] @Sukumar Rdjf
-
您是否尝试过所有子文件夹并发出
cat *命令,捕获输出,根据 空格 将其拆分,将list转换为 @987654327 @.and 再次到list并将该列表写入以子文件夹名称命名的文件。让我知道这是否有效。 -
我写了一个脚本来连接子文件夹中的文件,它现在解决了我的问题。但是,如果有人能解释如何处理所有子文件夹中的所有文件,并且将每个子文件夹视为一个文件,那就太好了。
标签: python nlp dataset tokenize