从文件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