python - 是否可以创建一个由另一个列表的元素百分比组成的列表?
问题描述
我正在尝试从语料库创建依赖解析器。语料库是 conll 格式,所以我有一个函数可以读取文件并返回一个列表列表,其中每个列表都是一个解析的句子(我正在使用的语料库已经解析,我的工作是在这个解析)。我的教授要求在这个语料库中只随机选择 5% 的句子,因为它太大了。
我尝试创建一个空列表并使用 append 函数,但我不知道如何通过索引来指定我想要语料库的每 100 个句子中的 5 个
我为转换 conll 文件所做的功能如下:
import os, nltk, glob
def read_files(path):
"""
Function to load Ancora Dependency corpora (GLICOM style)
path = full path to the files
returns de corpus in sentences
each sentence is a list of tuples
each tuple is a token with the follwoing info:
index of the token in the sentence
token
lemma
POS /es pot eliminar
POS
FEAT /es pot eliminar
head
DepRelation
"""
corpus = []
for f in glob.glob(path):
sents1 = open(f).read()[185:-2].split('\n\n')
sents2 = []
for n in range(len(sents1)):
sents2.append(sents1[n].split('\n'))
sents3 = []
for s in sents2:
sent = []
for t in s:
sent.append(tuple(t.split('\t')))
sents3.append(sent)
corpus.extend(sents3)
return corpus
我想要一种从语料库中每 100 个句子中选择 5 个句子的方法,这样我就可以得到一个仅包含这些的列表列表。提前致谢!
解决方案
只需使用random.sample
:
# define path here
corpus = read_files(path)
random.sample(corpus, len(corpus) // 20)
推荐阅读
- python - alembic 升级为 heroku 版本
- oracle - 在 MacOS High Sierra 上使用 SQL Developer 连接到 Oracle 时出现网络适配器错误
- android - android中的Picker问题(所选项目的文本)
- kubernetes - Operator 获取 Deployment 配置的最佳实践
- excel - 如何在 Excel 中舍入小数列表,以使整数之和等于定义的总数?
- python - 如何在 Windows 上捕捉 PyCharm 中的停止按钮?
- c# - 如何使用 EasyCache 设置值而不过期
- python - TensorFlow Hub 形状未定义
- javascript - 设置类属性的事件监听器
- javascript - 回调函数语法 - 为什么不允许这样做?