ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

从文件python进行单词分析和评分

2019-10-30 03:55:36  阅读:167  来源: 互联网

标签:sentiment-analysis word dictionary python regex


我正在对一个句子进行逐词分析,例如
“嘿!这是一部很棒的电影???”

我上面有很多句子.
我有一个巨大的数据集文件,如下所示,如果该词存在,我必须进行快速查找.如果这样做,则进行分析并将其存储在字典中,例如从单词文件中获取分数,句子的最后一个单词的分数,句子的第一个单词等.

句子[i] =>嘿!!这是一部很棒的电影???
句子[0] =嘿,句子[1] =有!句子[2] =这个,依此类推.

这是代码:

def unigrams_nrc(file):
   for line in file:
       (term,score,numPos,numNeg) = re.split("\t", line.strip())
       if re.match(sentence[i],term.lower()):
          #presence or absence of unigrams of a target term
          wordanalysis["unigram"] = found
       else:
          found = False
       if found:
          wordanalysis["trail_unigram"] = found if re.match(sentence[(len(sentence)-1)],term.lower()) else not(found)
          wordanalysis["lead_unigram"] = found  if re.match(sentence[0],term.lower()) else not(found)
          wordanalysis["nonzero_sscore"] = float(score) if (float(score) != 0) else 0             
          wordanalysis["sscore>0"] = (float(score) > 0)
          wordanalysis["sscore"] = (float(score) != 0)

       if re.match(tweet[len(sentence)-1],term.lower()):
          wordanalysis["sscore !=0 last token"] = (float(score) != 0)

这是文件(此文件中超过4000个单词):

#fabulous   7.526   2301    2
#excellent  7.247   2612    3
#superb 7.199   1660    2
#perfection 7.099   3004    4
#terrific   6.922   629 1
#magnificent    6.672   490 1
#sensational    6.529   849 2
#heavenly   6.484   2841    7
#ideal  6.461   3172    8
#partytime  6.111   559 2
#excellence 5.875   1325    6
@thisisangel    5.858   217 1
#wonderful  5.727   3428    18
elegant 5.665   537 3
#perfect    5.572   3749    23
#fine   5.423   2389    17
excellence  5.416   279 2
#realestate 5.214   114 1
bicycles    5.205   113 1

我想知道是否有更好的方法可以做到上述几点?
定义更好的方法:更快,更少的代码和优雅.
我是python的新手,所以我知道这不是最好的代码.我大约有4个文件需要检查分数,因此希望以最佳方式实现此功能.

解决方法:

这是我的提示:

>使用json.dumps()将文件写为JSON
>使用json.laods()将文件作为JSON加载
>将数据加载从分析中分离到单独的逻辑代码块中.例如:功能

对于具有O(1)复杂度的查找,Python dict比具有O(n)的迭代要快得多-因此,只要最初加载数据文件,您就会在其中获得一些性能优势.

范例:

from json import dumps, loads


def load_data(filename):
    return json.loads(open(filename, "r").read())

def save_data(filename, data):
    with open(filename, "w") as f:
        f.write(dumps(data))

data = load_data("data.json")

foo = data["word"]  # O(1) lookup of "word"

我可能会像这样存储您的数据:

data = {
    "fabulous": [7.526, 2301, 2],
    ...
}

然后,您将执行以下操作:

stats = data.get(word, None)
if stats is not None:
    score, x, y = stats
    ...

注意:…不是真实的代码和占位符,您应在此处填写空白.

标签:sentiment-analysis,word,dictionary,python,regex
来源: https://codeday.me/bug/20191030/1965181.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有