MicrosoftのAzure MLハッカソンは文字通り終了しました。 タスクの1つを解決するプロセスでは、ロシア語のテキストデータの処理が必要であり、できればシステム内で行う必要がありました。 結果として、解決策を探すために具体的な時間を費やしたので、私はそれを共有したいと思います。 これが誰かが時間を節約するのに役立ち、無駄に頭を打たないことを願っています。
ご存知のように、Azure MLには、システム内でスクリプトを開発するための2つの言語があります。 タスクを最も簡単に解決できるPythonから始めましょう。
データを処理するために呼び出される標準関数:
def azureml_main(dataframe1 = None, dataframe2 = None): for index, row in dataframe1.iterrows(): search = str(row['Search']).decode('utf-8')
ここでは、「Execute Python Script」ブロックの最初の入力に接続されているデータセットから検索列を取得し、utf-8から変換します。 その後、すべての文字列関数がこの行で正しく機能します。 テキストデータを返す必要がある場合は、逆の操作を実行する必要があります。
out_list.append(str.encode('utf-8')) return pandas.DataFrame(out_list)
ステミングを使用するには、RussianStemmerクラスをインポートし、Falseパラメーターからコンストラクターを呼び出してオブジェクトを作成してから、このオブジェクトを使用する必要があります。 現在、Trueパラメーターを使用して標準のストップワードセットをロードすることはできず、エラーが生成されます。
from nltk.stem.snowball import RussianStemmer stemmer = RussianStemmer(False) stemmer.stem(word)
Rの同様の問題を解くことは非常に単純に見えるので、この解決策を見つけるためにあなたが殺さなければならなかった時間は信じられないほどに思えます。
search<-dataset1$Search Encoding(search)<-'UTF-8'
同様に、「検索」列を選択し、明示的な形式でエンコードを設定します。 この呼び出しの後、文字列関数はテキストで正しく動作し始め、ライブラリstringiをチェックしました。 逆変換は必要ありません。すべて正常に動作します。
同様に、Rにステミングを実装します。エンコードUTF-8を指定する必要があることに注意してください。そうしないと、ステマーは何もしません。
library(SnowballC) stems <- wordStem(words, language = "russian")