我正在做我的大学项目,我必须从NLTK语料库(SemCor)中随机阅读50个句子
目前,我只能阅读以下前50句话:
from nltk.corpus import semcor as corpus
def get_sentence_from_semcor(sentence_num):
sentence = " ".join(corpus.sents()[sentence_num])
tags = corpus.tagged_sents(tag="sem")[sentence_num]
for curr_word in range(len(tags)):
if isinstance(tags[curr_word], nltk.Tree) and isinstance(tags[curr_word][0], str) and isinstance(tags[curr_word].label(), nltk.corpus.reader.wordnet.Lemma):
word = tags[curr_word][0]
target = tags[curr_word].label().synset()
sentence_no_word = sentence.replace(word, "")
return word, sentence_no_word, target
corpus_sentences = [get_sentence_from_semcor(i) for i in range(50)]
关于如何随机选择语料库中的50个句子,有什么帮助吗
您需要随机性,所以让我们导入
random
库:import random
然后我们需要知道我们的约束是什么。显然,我们可以选择的最早的句子1,或者索引为0的句子,但要知道最大值;我们需要计算句子的数量,然后减去1得到最后一个句子的索引
max_sentence = len(corpus.sents())-1
我们将创建一个空列表来存储我们的[伪]随机数:
list_of_random_indexes = []
然后在其中输入一些数字(本例中为50个):
然后以最后一行的修改版本结束,该行现在引用我们的随机数列表,而不是范围:
corpus_sentences = [get_sentence_from_semcor(i) for i in list_of_random_indexes]
因此,总而言之:
或者让它更干净一点:
但是,因为您可能不希望有重复的行,所以在添加索引之前,我还将检查它是否不在列表中
您可以尝试以下方法:
代码将重复n_次,每次返回一组50个句子。”“开始”是范围(0,长度)内的随机整数。(假设您知道语料库的总长度)
相关问题 更多 >
编程相关推荐