您的位置:首页 > 编程语言 > Python开发

【技能篇】python读取文件、实体抽取

2017-07-28 21:07 357 查看
最近写了一个实体抽取,并且相应的实体填充预处理方案,代码如下(初步实现方案,后期会持续优化代码),完成所有功能会上传至Github上。

import os

import gensim

def main():

    word_list = ['平安银行', '000002', '测试', '买入']

    #填充实体列表

    entity_list = ['entity1', 'entity2']

    sorttext(word_list, entity_list)

#根据用户问句分词,并将其作为首元素返回

def sorttext(word_list, entity_list):  #wordset表示分词集合,dict表示file2Dict结果

    return_list = []

    all_dict = filterdict()

    for item in word_list:

        for key in all_dict:

            if key != item:

                continue

            else:

                return_list.append(all_dict[key])

                word_list[word_list.index(item)] = entity_list[0]

                if all_dict[key] in word_list:

                    word_list.remove(all_dict[key])

                return_list.append(word_list)

                print(return_list)

                return return_list

        for key in all_dict:

            if item != all_dict[key]:

                continue

            else:                   # 含有证券代码

                return_list.append(item)

                word_list[word_list.index(item)] = entity_list[0]

                if key in word_list:

                    word_list.remove(key)

                return_list.append(word_list)

                print(return_list)

                return return_list

    for item in word_list:

        if(item != '大盘'):

            continue

        else:

            if(item == '大盘'):

                return_list.append('999999')

                word_list[word_list.index(item)] = entity_list[1]

                return_list.append(word_list)

                print(return_list)

                return return_list

            else:

                return_list.append('000000')

                return_list.append(word_list)

                print(return_list)

                return return_list

    return_list.append('000000')

    return_list.append(word_list)

    print(return_list)

    return return_list

# 将’证券名称‘与’号码‘文件转化为字典

def file2dict():

#根据绝对路径读取文件

    current_dir = os.path.abspath('.') 

    file_name = os.path.join(current_dir, 'data.csv')

    file = open(file_name, encoding="UTF8")

    cache = file.readlines()

    file.close()

    all_dict = {}

    for i in range(len(cache)):

        row_list = cache[i].strip('\n').split(',')

        dict = {row_list[1]: row_list[0]}

        all_dict.update(dict)

    del all_dict['证券名称']  # 删除第一行

    return all_dict

# 字典过滤(含有字母A和*)

def filterdict():

    first_dict = file2dict()

    all_dict = {}

    for key in first_dict:

        second_dict = {key.replace('A', ''): first_dict[key]}

        third_dict = {key.replace('*', ''): first_dict[key]}

        all_dict.update(second_dict)

        all_dict.update(third_dict)

    return all_dict

if __name__ == '__main__':

    main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息