2

私はPythonで非常に新しいです。単語のリストを含むファイルがあります。これらにはデンマーク文字 (ÆØÅ) が含まれていますが、再コンパイルではこれらの文字が認識されません。この関数は単語を ÆØÅ ごとに分割します。テキストは Twitter や Facebook からダウンロードしたものであり、常に文字のみが含まれているわけではありません。

text = "Rød grød med fløde.... !! :)"
pattern_split = re.compile(r"\W+")
words = pattern_split.split(text.lower())
words = ['r', 'd', 'gr', 'd', 'med', 'fl', 'de']

正しい結果は

    words = ['rød', 'grød', 'med', 'fløde']

正しい結果を得るにはどうすればよいですか?

完全なコード

#!/usr/bin/python 
# -*- coding: utf-8 -*-

import math, re, sys, os
reload(sys)
sys.setdefaultencoding('utf-8')

# AFINN-111 is as of June 2011 the most recent version of AFINN
#filenameAFINN = 'AFINN/AFINN-111.txt'

# Get location of file
__location__ = os.path.realpath(
    os.path.join(os.getcwd(), os.path.dirname(__file__)))


filenameAFINN = __location__ + '/AFINN/AFINN-111DK.txt'
afinn = dict(map(lambda (w, s): (w, int(s)), [ 
            ws.strip().split('\t') for ws in open(filenameAFINN) ]))

# Word splitter pattern
pattern_split = re.compile(r"\W+")
#pattern_split = re.compile('[ .,:();!?]+')

def sentiment(text):
    print(text)
    words = pattern_split.split(text.lower().strip())
    print(words)
    sentiments = map(lambda word: afinn.get(word, 0), words)
    if sentiments:
        sentiment = float(sum(sentiments))/math.sqrt(len(sentiments))

    else:
        sentiment = 0
    return sentiment


# Print result
text = "ånd ånd med fløde... :)asd "
id = 999
split = "###"
print("%6.2f%s%s%s%s" % (sentiment(text), split, id, split, text))
4

2 に答える 2

0

afinnデンマーク語を含む国際文字セットと、(一部のバージョンの) Python 2 および 3 で動作するはずの Python パッケージを紹介したいと思います。英語とデンマーク語の単語リストがあります。私はおそらくあなたの問題を解決します。

ここでは Python 2.7 または Python 3.4:

>>> from afinn import Afinn
>>> afinn = Afinn(language='da', emoticons=True)
>>> afinn.score(u"ånd ånd med fløde... :)asd ")
4.0
>>> afinn.score('Hvis ikke det er det mest afskyelige flueknepperi...')
-6.0

ライブラリは次の場所から入手できます。

https://github.com/fnielsen/afinn

または Python Package Index でpip install afinn

于 2016-03-21T12:39:15.233 に答える