пятница, 8 июня 2012 г.

Определение полярности настроений в финансовом потоке новостей


Недавно столкнулся с задачей автоматического обнаружения настроений в финансовых новостях и захотелось поделится своими результатами. http://github.com/rsemenov/SentAnalizer


Небольшое вступление


Если назвать некоторые тексты как положительные, а некоторые как негативные, то возникает вопрос есть ли метод который учится характеристикам каждой из эмоции. В своей работе Pang, Lee and Vaithyanathan используют обзоры к фильмам для обучения алгоритма, который определяет настроение в тексте. Обзоры являются хорошим источником для такого рода работы потому что они четко выражают свое мнение, и сопровождаются цифровым рейтингом, что облегчает обучение алгоритмов на этих данных.
Но мы рассмотрим другую область: финансовые новости. Каждый день инвесторы получают немалый поток новостей о разных компаниях и организациях, на основе которых им приходится принимать те или иные инвестиционные решения. Эти решения влияют на рынки, что приводит к изменениям стоимости компаний и организаций. То есть происходит преобразование вербальной информации в числовую. Гипотеза эффективных рынков (The Efficient Markets Hypothesis) является формализация этого факта: рыночные цены немедленно реагируют на всю имеющуюся информацию, причем негативные новости отрицательно влияют на доходность рынка, положительные наоборот. Это позволяет нам выделить два класса (позитивные, негативные) к которым следует относить данную новость.
Bing Liu в своей работе предложил представление мнения или настроения в тексте как пятерку \( (o_{j}, f_{jk}, so_{ijkl}, h_{i}, t_{l}) \), где \( o_{j}\) - объект, \(f_{jk}\) - свойство объекта, \(so_{ijkl}\) - мнение i-го субъекта \(h_{i} \) про свойство \( f_{jk} \) объекта \( o_{j}\) в момент времени \(t_{l}, h_{i} \) - субъект, \(t_{l}\) - время, когда мнение было выражено. Но в сфере финансов мы имеем дело с фактами, а не с мнениями о свойствах объекта, поэтому нужно построить более подходящую модель.

Множество слов и векторизация текста


Пускай \( \Omega=\begin{Bmatrix} ALMK, & CEEN, & …, &AAPL\end{Bmatrix}\) - универсум понятий, тогда новость можно представить как (Q, S, t), где \( Q \subseteq \Omega \) - названия компаний, организаций (CEEN, ALMK, AAPL), \(S=\begin{Bmatrix}s_{1}, & s_{2}, & …, & s_{n}\end{Bmatrix}\), где \(s_{i} ={0,1}\) - индикатор настроения, t - время публикации новости. Для определения такой тройки необходимо решить следующие проблемы:

  • Выделение объектов (компаний, организаций) из текста новости 
  • Выделение частей текста в которых говорится о данном объекте
  • Определение настроения:
    1. Формирование множества слов W, которые влияют на настроение 
    2. Векторизация текста  
    3. Классификация

Будем считать что если \(Q = \emptyset \), то данная новость не несет в себе никакой полезной нам информации, так как новость не касается ни одного интересующего нас понятия из множества \( \Omega\), и мы не анализируем ее. \subsubsection{Множество слов и векторизация текста} Пускай\( W=\begin{pmatrix} W_{1}, & W_{2}, & …, &W_{n}\end{pmatrix}\) - множество слов которые имеют влияние на настроение в котором написана новость. Векторизация текста состоит в том чтобы представить текст \( \tau\) в виде вектора \(\begin{pmatrix} w_{1}, & w_{2}, & …, & w_{n}\end{pmatrix}\), где \(w_{i}=1\), если слово \(W_{i}\) присутствует в тексте \(\tau\). При векторизации текста нужно учитывать особенности украинского или русского языка. Например три разных слова "рост", "вырастать", "расти" имеют один корень "рост" и означают одно и тоже, поэтому нет смысла хранить в словаре W все слова, достаточно лишь хранить корни слов или так называемую нормальную форму слова. Процедура приведения слова к его нормальной форме называется Stemming. \cite{stemming} Также множество W можно сократить за счет удаления слов, частота которых меньше определенной величины.

Классификация

Имеется множество категорий/классов \( C=\begin{Bmatrix} c_{1}, & c_2\end{Bmatrix}\).Имеется множество векторизированных текстов \(D=\begin{Bmatrix} w_{1}, & w_{2}, & …, & w_{n}\end{Bmatrix}\). Неизвестная целевая функция \begin{equation} \Phi: C \cdot D \rightarrow [0,1] \end{equation} Необходимо построить классификатор \({\Phi}' \) , максимально близкий к \(\Phi\). Имеется некоторая начальная коллекция размеченных текстов \( \Theta \subset C\cdot D \), для которых известны значения \(\Phi\). Для классификации я использовал байесовский классификатор, задача которого состоит в нахождении наиболее вероятного класса \(c_{m} \). \begin{equation} c_{m} = argmax_{c\in C} P(c| X_1=x_1, X_2=x_2, ...,X_n=x_n) \end{equation} \begin{equation} c_{m} = argmax_{c\in C} \frac{P(X_1=x_1, X_2=x_2, ...,X_n=x_n | c)P(c)}{P(X_1=x_1, X_2=x_2, ...,X_n=x_n)} \end{equation} \begin{equation} = argmax_{c\in C} P(X_1=x_1, X_2=x_2, ...,X_n=x_n | c)P(c) \end{equation} Считая вхождения слов \(w_i\) в текст документа взаимонезависимыми явлениями получаем \[ c_{m} = argmax_{c\in C} P(X_1=x_1, X_2=x_2, ...,X_n=x_n | c)P(c) \] \begin{equation} = argmax_{c\in C}P(c)\prod_{k=1,n} P(X_k=x_k | c) \end{equation} \(P(X_i=x_i;C=c)\) - вероятность что слово \(W_i\) встречается \((x_i=1)\) /не встречается \((x_i=0)\) в классе с. \begin{equation} P(X_k=x_k|c)=\frac{T_k}{T} \end{equation} ,где \(T_k\) - количество текстов в которых \( X_k=x_k \) в классе с, T - общее количество текстов в классе.

Вместо вывода

Предложена модель для определения полярности настроения по заданным ценным бумагам (организациям) в финансовом потоке новостей. Описаны основные проблемы и задачи которые встречаются в данной области, указаны методы их решений. Данная модель может быть абстрагирована на более широкий класс задач связный с анализом мнений и настроений по заданным заранее понятиям.

3 комментария:

  1. Gambling in California - KTNV
    The 목포 출장마사지 following casinos are gambling on slots, table games and more,” says Karr 통영 출장안마 Lomato, president 동해 출장샵 of the 남양주 출장마사지 Gambling Alliance. 창원 출장마사지 The following

    ОтветитьУдалить
  2. As I said 코인카지노 within the intro, the game is a part of} the 888Casino slot portfolio. Developed by Section8 Studio, the Sizzling Hot Jokers is a great sport have the ability to|you presumably can} play only at 888Casino. Every symbol in that pattern will then flip Wild assist you|that will assist you|that can assist you} create more successful combos.

    ОтветитьУдалить
  3. Canadian players can choose the payment choice that works best for them from a long listing of choices. Bonuses aren’t as 카지노사이트.online widespread at Ruby Fortune as they are at other on-line casinos. Ruby Fortune does supply a welcome bonus model spanking new|for brand new} customers although. In the upper proper nook, click on on the green Deposit button after which select Withdrawal. You can solely withdraw quickly as} you've got met the requirements, so when you make your first deposit, they will seem.

    ОтветитьУдалить