Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文本数据集中提取特征_Python_Pandas_Nlp_Text Processing_Multilabel Classification - Fatal编程技术网

Python 从文本数据集中提取特征

Python 从文本数据集中提取特征,python,pandas,nlp,text-processing,multilabel-classification,Python,Pandas,Nlp,Text Processing,Multilabel Classification,我有一个关于文本数据集特征提取的问题。使用来自以下位置的预处理数据集: 预处理的数据是每个文档一行,每行的格式如下: feature:<count> .... feature:<count> #label#:<label> 请使用正则表达式。希望下面的代码有帮助。在dataframe total中,您将获得所有功能和标签 import pandas as pd import re list_of_dict = [] str_feature_pattern

我有一个关于文本数据集特征提取的问题。使用来自以下位置的预处理数据集:

预处理的数据是每个文档一行,每行的格式如下:

feature:<count> .... feature:<count> #label#:<label>

请使用正则表达式。希望下面的代码有帮助。在dataframe total中,您将获得所有功能和标签

import pandas as pd
import re

list_of_dict = []
str_feature_pattern = re.compile(r'(\w+\s*:\s+\d+)+')
str_label_pattern = re.compile(r'.*#(\w+:\d+)')

with open ('amazon_book.review', 'r') as data:
    for i in range(3):
        line=data.readline()
        feature_match = str_feature_pattern.findall(line)
        label_match = str_label_pattern.findall(line)
        dict = {}
        for f in feature_match:
          vals = f.split(sep=":")
          dict[vals[0]] = vals[1]
        label_val = label_match[0].split(sep=':')
        dict[label_val[0]] = label_val[1]
        list_of_dict.append(dict)
total=pd.DataFrame(list_of_dict)
    

    

首先:
dict
是一个默认类,不要用它来命名变量。第二:我无法理解你的要求。我已经试着运行了你的代码,除了在
alpha
delta
等特性中的
后面有一个空格之外,它工作得很好。我想得到文件中的唯一字作为列,不同的行作为行,比如df[line 1][word]={该行的字数}。主要目标是在此文本数据集上执行k-means聚类。@Surjya----------------------------------------------------------------------15 VAL=f.split(sep=“:”)16 dict[VAL[0]]=VAL[1]中的索引器回溯(最近一次调用)-->17 label_val=label_match[0]。拆分(sep=':')18 dict[label_val[0]]=label_val[1]19 dict的列表。追加(dict)索引器:第17行(label_val==label_match[0])中的列表索引超出范围。。拆分(sep=':'),它说:IndexError:list index out out range我提供的代码认为您的所有行都包含特性和标签。似乎你的几行没有包含标签。如果是这种情况,请调试数据。
import pandas as pd
dict={}
total=pd.DataFrame()
with open ('amazon_book.review', 'r') as data:
    for i in range(3):
        line=data.readline()
        for word in line.split():
            key,value=word.split(sep=":")
            dict[key]=value
import pandas as pd
import re

list_of_dict = []
str_feature_pattern = re.compile(r'(\w+\s*:\s+\d+)+')
str_label_pattern = re.compile(r'.*#(\w+:\d+)')

with open ('amazon_book.review', 'r') as data:
    for i in range(3):
        line=data.readline()
        feature_match = str_feature_pattern.findall(line)
        label_match = str_label_pattern.findall(line)
        dict = {}
        for f in feature_match:
          vals = f.split(sep=":")
          dict[vals[0]] = vals[1]
        label_val = label_match[0].split(sep=':')
        dict[label_val[0]] = label_val[1]
        list_of_dict.append(dict)
total=pd.DataFrame(list_of_dict)