编程语言
首页 > 编程语言> > 从文件python进行单词分析和评分

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

作者:互联网

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

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

句子[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