Анализ настроений в Твиттере с использованием Dandelion API Error - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь проанализировать настроение в Твиттере, используя Анализ настроения одуванчика api. Хотя у меня есть довольно много методов, метод ниже мой основной в Class SentimentAnalyser:

private Twitter twitter;
private PrintStream consolePrint;
private List<Status> statuses;
public static List<String> tweets; 

@SuppressWarnings("unchecked")
    public static String method(String userToken, int nthRecent)
    {
      //my own user Token: 35a5b026870c49f69d3c688779ff26db
      String tweet = tweets.get(nthRecent);
      try
      {
         String urlString = "https://api.dandelion.eu/datatxt/sent/v1/?lang=en&text=";
         urlString += tweet;
         urlString = urlString + "&token="+userToken; 
         
         URL url = new URL(urlString);
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
         con.setRequestMethod("GET");
         
         BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); // this is the line 130 the error message refers to
         StringBuffer response = new StringBuffer();
         String line; 
         while ((line = in.readLine()) != null) 
         {
            response.append(line);
         }
         in.close();
         con.disconnect();
         return response.toString();
      }
      catch (Exception e)
      {
         e.printStackTrace();
         return null;
      }
   }

И вот мой основной метод ниже:

private static PrintStream consolePrint;
   public static void main(String[] args) throws TwitterException, IOException
   {
        consolePrint = System.out;
        SentimentAnalyser bigBird = new SentimentAnalyser(consolePrint);
        Scanner scan = new Scanner(System.in);
        consolePrint.print("Please enter a Twitter handle, do not include the @symbol --> ");
        String twitter_handle = scan.next();
        
        while(!twitter_handle.equals("done"))
        {
            bigBird.queryHandle(twitter_handle);
            consolePrint.print("Enter the nth most recent tweet you would like analysed from " + twitter_handle + "--> ");
            int nthRecent = scan.nextInt();
            consolePrint.print("Enter your user Token --> ");
            String userToken = scan.next(); 
            consolePrint.println(bigBird.method(userToken, nthRecent)); //this is the line 42 the error message refers to
            twitter_handle = scan.next();
        }
   }

Однако, когда я запускаю это, я получаю следующее сообщение об ошибке:

Пожалуйста, введите дескриптор Twitter, не включайте @symbol -> rudwick2

Введите n-й самый последний твит, который вы хотели бы проанализировать с rudwick2 -> 3

Введите свой токен пользователя -> 35a5b026870c49f69d3c688779ff26db

java. io.IOException: Сервер вернул код ответа HTTP: 400 для URL: https://api.dandelion.eu/datatxt/sent/v1/?lang=en&text= cien max Отличная презентация и токен = 35a5b026870c49f69d3c688779ff26db при java .base / sun. net. www.protocol.http.HttpURLConnection.getInputStream0 (HttpURLConnection. java: 1913) при java .base / sun. net. www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection. java: 1509) при java .base / sun. net. www.protocol.https.HttpsURLConnectionImpl.getInputStream (HttpsURLConnectionImpl. java: 245) в SentimentAnalyser.method (TwitterPart3. java: 130) в TwitterPart3.main (TwitterPart3. java: 42) null

Я довольно новичок в этом виде проект, и я не уверен, где я ошибся - я могу сказать, что ответ от URL в методе не работает. Это потому, что URL в сочетании с твитом не совсем подходит?

...