2

背景: 私は、Azure ML の感情分析を使用して、製品レビューを肯定的および否定的に分類することを目的としたプロジェクトに取り組んでいます。レビューをさまざまな部門に分類していたときに行き詰まりました。

私は基本的にcsvファイルから単語を読み取り、レビュー(v:文章のリスト)にこれらの単語が含まれているかどうかを確認しています。これらの単語のいくつかがレビューで見つかった場合、文番号を書き留めて、それぞれのリスト (FinanceList、QualityList、LogisticsList) にプッシュします。最後に、リストを文字列に変換してデータフレームにプッシュします。

Azure ML のスクリプトで記述した print ステートメントの出力がログに記録されません。

データフレームの値は常に 0 になりますが、コードをローカルで実行すると、期待どおりの出力が得られます。

最初の画像の説明: 0 の値を示すデータフレームの列。

2 番目の画像の説明: AzureML で使用されたのと同じレビューのためにローカルで取得した予想される出力を強調表示しました。

画像1

画像2

私がすでにチェックしたこと:

  1. csv ファイルは正しく読み込まれます。
  2. レビューには、私が探している言葉が含まれています。

どこが間違っているのか理解できません。

'

import csv
import math
import pandas as pd
import numpy as np

def azureml_main( data, ud):

   FinanceDept = []
   LogisticsDept = []
   QualityDept = []
  #Reading from the csv files
   with open('.\Script Bundle\\quality1.csv', 'rb') as fin:
      reader = csv.reader(fin)
      QualityDept = list(reader)

   with open('.\Script Bundle\\finance1.csv', 'rb') as f:
      reader = csv.reader(f)
      FinanceDept = list(reader)

   with open('.\Script Bundle\\logistics1.csv', 'rb') as f:
      reader = csv.reader(f)
      LogisticDept = list(reader)

   FinanceList = []
   LogisticsList = []
   QualityList = []

#Initializing the Lists   
   FinanceList.append(0)
   LogisticsList.append(0)
   QualityList.append(0)

   rev = data['Data']
   v = rev[0].split('.')

   print FinanceDept

   S = 0   
   for sentence in v:
      S = S + 1
      z = sentence.split(' ')
      for c in z:
         c = c.lower()
         if c in FinanceDept and S not in FinanceList:
            FinanceList.append(S)
         if c in LogisticsDept and S not in LogisticsList:
            LogisticsList.append(S)
         if c in QualityDept and S not in QualityList:
            QualityList.append(S)
   #Compute User Reputation Score
   Upvotes = int(ud['upvotes'].tolist()[0])
   Downvotes = int(ud['downvotes'].tolist()[0])
   TotalVotes = max(1,Upvotes+Downvotes)

   q = data['Score']

   print FinanceList

   repScore = float(Upvotes)/TotalVotes 
   repScore = repScore*float( q[0] )
   str1 = ','.join(str(e) for e in FinanceList) 
   str2 = ','.join(str(e) for e in QualityList)
   str3 = ','.join(str(e) for e in LogisticsList)

   x = ud['id']

   #df = pd.DataFrame(  [str(repScore), str1  , str2  , str3 ], columns=[Write the columns])
   d = {'id': x[0], 'Score': float(repScore),'Logistics':str3,'Finance':str1,'Quality':str2}
   df = pd.DataFrame(data=d, index=np.arange(1))
   return df,`
4

2 に答える 2

0

https://azure.microsoft.com/en-us/documentation/articles/machine-learning-execute-python-scripts/によると、ファイル パスが正しいかどうかを確認できますか。Python コードは、ただし、現在のディレクトリとそのサブディレクトリは例外です。「スクリプト バンドル」はサブディレクトリですか? スクリプトから csv ファイルを読み取るのではなく、入力を使用することもできます。Execute Python Scripts モジュールは 3 つの入力を受け入れます。最初の 2 つはデータ フレームで、3 番目は Python ライブラリ ファイル用に予約されています。たとえば、入力 1 を実際のデータに使用し、入力 2 を元の csv の単語に使用できます。入力 2 の 1 つのデータ フレームに 3 つの csv ファイルをバンドルするメカニズムが必要です。

于 2015-09-09T02:19:24.297 に答える