繁体   English   中英

字典特征提取Python

[英]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中,并在需要时iteratelist

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM