[英]dictionaries feature extraction Python
我正在做一个文本分类实验。 对于特征提取阶段,我正在尝试为每个文档创建一个特征字典。 现在,我有两个功能,类型令牌比率和功能词相对频率的n元语法。 当我打印实例时,词典中只有要素类型标记比率。 这似乎是因为无法正常运行get_pos()
。 它返回空列表。 这是我的代码:
instances = []
labels = []
directory = "\\Users\OneDrive\Data"
for dname, dirs, files in os.walk(directory):
for fname in files:
fpath = os.path.join(dname, fname)
with open(fpath,'r') as f:
text = csv.reader(f, delimiter='\t')
vector = {}
#TTR
lemmas = get_lemmas(text)
unique_lem = set(lemmas)
TTR = str(len(unique_lem) / len(lemmas))
name = fname[:5]
vector['TTR'+ '+' + name] = TTR
#function word ngrams
pos = get_pos(text)
fw = []
regex = re.compile(
r'(LID)|(VNW)|(ADJ)|(TW)|(VZ)|(VG)|(BW)')
for tag in pos:
if regex.search(tag):
fw.append(tag)
for n in [1,2,3]:
grams = ngrams(fw, n)
fdist = FreqDist(grams)
total = sum(c for g,c in fdist.items())
for gram, count in fdist.items():
vector['fw'+str(n)+'+'+' '+ name.join(gram)] = count/total
instances.append(vector)
labels.append(fname[:1])
print(instances)
这是来自get_pos函数的代码,我从另一个脚本调用了该代码:
def get_pos(text): row4=[] pos = [] for row in text: if not row: continue else: row4.append(row[4]) pos = [x.split('(')[0] for x in row4] # remove what's between the brackets return pos
您能帮我找出get_pos函数的问题吗?
当您调用get_lemmas(text)
,文件的所有内容都将被消耗,因此get_pos(text)
上没有任何内容可以iterate
。 如果要多次浏览文件的内容,则需要在f.seek(0)
调用之间使用f.seek(0)
,或者在开始时将行读入list
中,并在需要时iterate
该list
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.