Python, SpaCy ve Streamlit Kullanarak Yapılandırılmış Bir Finansal Haber Kaynağı Oluşturma
Adlandırılmış Varlık Tanıma(NER) uygulaması oluşturarak NLP'yi kullanmaya başlama.
By harshit tyagi, Veri Bilimi Eğitmeni | Mentor | YouTuber
NLP'nin çok ilginç ve yaygın olarak kullanılan uygulamalarından biri Named Entity Recognition(NER)'dir.
Ham ve yapılandırılmamış verilerden içgörü elde etmek hayati önem taşımaktadır. Bir belgeyi karşıya yüklemeye ve ondan önemli bilgi parçalarını almaya bilgi alma denir.
Bilgi alımı, NLP'de önemli bir görev/zorluk olmuştur. Ve NER(veya NEL — Adlandırılmış Varlık Bağlantısı) çeşitli alanlarda (finans, ilaçlar, e-ticaret, vb.) bilgi alma amacıyla kullanılır.
Bu eğitim yazısında, internette hareketli hisse senetlerini listeleyen özel bir borsa haber beslemesi geliştirmek için NEL'den nasıl yararlanabileceğinizi göstereceğim.
Ön koşul
Böyle bir ön koşul yoktur. Python ve tokenizasyon, POS etiketleme, bağımlılık ayrıştırma ve benzeri gibi NLP'nin temel görevlerine biraz aşina olmanız gerekebilir.
Önemli kısımları daha ayrıntılı olarak ele alacağım, böylece yeni başlayan biri olsanız bile, neler olup bittiğini anlayabilirsiniz.
Öyleyse devam edelim, takip edin ve araştırmaya başlayabileceğiniz minimum bir hisse senedi haber akışına sahip olacaksınız.
İhtiyacınız olacak araçlar/kurulum:
- Verilerin ve SpaCy kitaplığının ilk testi ve keşfi için Google Colab.
- Streamlit uygulamasını kodlamak için VS Kodu (veya herhangi bir düzenleyici).
- NER ve daha sonra NEL gerçekleştireceğimiz borsa bilgilerinin (haberlerin) kaynağı.
- Pandas, SpaCy, Streamlit, Streamlit-Spacy gibi kitaplıklarla birlikte sanal bir python ortamı (conda kullanıyorum) (bazı SpaCy işlemelerini göstermek istiyorsanız.)
Nesnel
Bu projenin amacı, önemli varlıkları (örneğimizde halka açık şirketler) çıkarmak için Adlandırılmış Varlık Tanıma'yı öğrenmek ve uygulamak ve ardından bir bilgi tabanını (Nifty500 şirket listesi) kullanarak her varlığı bazı bilgilerle ilişkilendirmektir.
İnternetteki RSS beslemelerinden metinsel verileri alacağız, hareketli hisse senetlerinin isimlerini çıkaracağız ve ardından bu hisse senetlerinde herhangi bir pozisyon almadan önce haberlerin gerçekliğini test etmek için piyasa fiyat verilerini çekeceğiz.
Not: NER son teknoloji bir problem olmayabilir, ancak endüstride birçok uygulaması vardır.
Deneme ve test için Google Colab'a geçiş:
Adım 1: Trend olan hisse senedi haber verilerini çıkarma
Bazı güvenilir otantik borsa haberleri almak için Ekonomik Zamanlar ve Para Kontrolü Bu eğitim için RSS beslemeleri, ancak beslemenizi daha bilgilendirici/doğru hale getirmek için ülkenizin RSS beslemelerini veya Twitter/Telegram(gruplar) verilerini de kullanabilir/ekleyebilirsiniz.
Fırsatlar çok büyük. Bu öğretici, farklı türlerde bilgi alma sorunlarını çözen farklı etki alanlarında uygulamalar oluşturmak için NEL'yi uygulamak için bir adım taşı olarak hizmet etmelidir.
RSS beslemesine bakmaya devam ederseniz, şöyle görünür:
https://economictimes.indiatimes.com/markets/rssfeeds/1977021501.cms
Amacımız bu RSS beslemesinden metinsel başlıkları almak ve ardından ana varlıkları başlıklardan çıkarmak için SpaCy'yi kullanacağız.
Başlıklar içinde mevcut XML etiketi burada.
İlk olarak, tüm XML belgesini yakalamamız gerekiyor ve bunu kullanabiliriz. requests
Bunu yapmak için kütüphane. Colab'deki çalışma zamanı ortamınızda bu paketlerin kurulu olduğundan emin olun.
Hemen hemen her paketi doğrudan bir işbirliğinin kod hücresinden yüklemek için aşağıdaki komutu çalıştırabilirsiniz:
!pip install <package_name>
Gönder GET
XML belgesini yakalamak için sağlanan bağlantıdaki istek.
import requestsresp = requests.get("https://economictimes.indiatimes.com/markets/stocks/rssfeeds/2146842.cms")
Yanıt nesnesinde ne elde ettiğinizi kontrol etmek için hücreyi çalıştırın.
Aşağıdaki gibi HTTP kodu 200 ile size başarılı bir yanıt vermelidir:
Artık bu yanıt nesnesine sahip olduğunuza göre, XML belgesini aşağıdaki gibi ayrıştırmak için içeriğini BeautifulSoup sınıfına aktarabiliriz:
from bs4 import BeautifulSoupsoup = BeautifulSoup(resp.content, features='xml')
soup.findAll('title')
Bu size bir Python listesinin içindeki tüm başlıkları vermelidir:
Yazara göre resim
Müthiş, NLP kullanarak ana varlıkları (bu durumda halka açık şirketler olan) çıkaracağımız metinsel verilere sahibiz.
NLP'yi harekete geçirmenin zamanı geldi.
2. Adım: Başlıklardan varlıkları çıkarma
Bu heyecan verici kısım. bir kullanacağız önceden eğitilmiş çekirdek dil modeli itibaren spaCy
bir başlıktaki ana varlıkları çıkarmak için kitaplık.
SpaCy ve çekirdek modeller hakkında biraz.
spacy metinsel verileri süper hızlı bir şekilde işleyen açık kaynaklı bir NLP kitaplığıdır. Ölçekte kurumsal düzeyde uygulamalarda kullanılan NLP araştırmalarında lider kütüphanedir. spaCy, sorunu ölçeklendirmesiyle ünlüdür. 64'ten fazla dili destekler ve hem TensorFlow hem de PyTorch ile iyi çalışır.
Çekirdek modellerden bahsedecek olursak, spaCy bize en gelişmiş çıkarımları sağlamak için farklı boyutlardaki metin verileri üzerinde eğitilmiş iki ana önceden eğitilmiş dil modeli sınıfına sahiptir.
- Çekirdek Modeller — genel amaçlı temel NLP görevleri için.
- Başlangıç Modelleri — transfer öğrenimi gerektiren niş uygulamalar için. Modeli sıfırdan eğitmek zorunda kalmadan özel modellerimizde ince ayar yapmak için modelin öğrenilen ağırlıklarından yararlanabiliriz.
Bu eğitimde kullanım durumumuz temel olduğundan, en_core_web_sm
çekirdek model boru hattı.
O halde bunu defterimize yükleyelim:
nlp = spacy.load("en_core_web_sm")
Not: Colab bunu bizim için zaten indirdi, ancak yerel sisteminizde çalıştırmayı denerseniz, önce aşağıdaki komutu kullanarak modeli indirmeniz gerekir:
python -m spacy download en_core_web_sm
en_core_web_sm temel olarak aşağıdaki bileşenlere sahip CPU için optimize edilmiş bir İngilizce işlem hattıdır:
- tok2vec — token to vectors(metinsel veriler üzerinde tokenleştirme gerçekleştirir),
- etiketleyici — her simgeye ilgili meta veriler ekler. spaCy, her jetonun konuşma kısmını (POS) tahmin etmek için bazı istatistiksel modellerden yararlanır. Daha fazlası belgeleme.
- ayrıştırıcı — bağımlılık ayrıştırıcısı, belirteçler arasında ilişkiler kurar.
- Diğer bileşenler, gönderici, ner, öznitelik_ruler, lemmatizer içerir.
Şimdi, bu modelin bizim için neler yapabileceğini test etmek için, somutlaştırılmış modelden tek bir başlık geçireceğim ve ardından bir cümlenin farklı kısımlarını kontrol edeceğim.
# make sure you extract the text out of <title> tagsprocessed_hline = nlp(headlines[4].text)
İşlem hattı, belirteçleştirmeden NER'ye kadar tüm görevleri gerçekleştirir. Burada önce belirteçlere sahibiz:
Yazara göre resim
kullanarak konuşmanın etiketli kısmına bakabilirsiniz. pos_
özniteliği.
Yazara göre resim
Her belirteç bazı meta verilerle etiketlenir. Örneğin, Ticaret Özel Bir İsimdir, Kurulum bir İsimdir, :
noktalama işaretleri, vb. Tüm Etiketler listesi verilir okuyun.
Ardından, bağımlılık grafiğine bakarak bunların nasıl ilişkili olduğuna bakabilirsiniz. dep_
özellik:
Yazara göre resim
Burada Ticaret Bileşiktir, Kurulum Köktür, Nifty appos'tur (Appozisyonel değiştirici). Yine, tüm sözdizimsel etiketler bulunabilir okuyun.
Aşağıdaki gösterimi kullanarak belirteçler arasındaki ilişki bağımlılıklarını da görselleştirebilirsiniz. render()
yöntem:
spacy.displacy.render(processed_hline, style='dep',jupyter=True, options={'distance': 120})
bu grafiği verecek olan:
Yazara göre resim
varlık çıkarma
Ve cümlenin önemli varlıklarına bakmak için 'ent’
aynı kodda stil olarak:
Yazarın resmi — Yukarıda kullandığımız başlığın herhangi bir varlığı olmadığı için başka bir başlık kullandım.
Günün TARİH, Glasscoat'ın Ülkeler/Şehirler/Eyalet olabilen GPE'si gibi farklı varlıklar için farklı etiketlerimiz var. Bize Şirketler, ajanslar, kurumlar vb. verecek ORG etiketine sahip varlıkları arıyoruz.
Artık metinden varlıkları çıkarabiliyoruz. ORG varlıklarını kullanarak tüm manşetlerden kuruluşları çıkarmaya başlayalım.
Bu, tüm şirketlerin bir listesini aşağıdaki gibi döndürür:
Yazara göre resim
Çok kolay, değil mi?
İşte şimdi spaCy'nin büyüsü!
Bir sonraki adım, o şirket için doğru hisse senedi sembolünü çıkarmak için tüm bu şirketleri bir bilgi tabanında aramak ve ardından fiyat, getiri vb. gibi pazar ayrıntılarını çıkarmak için yahoo-finance gibi kütüphaneleri kullanmaktır.
Adım 3 — Adlandırılmış Varlık Bağlantısı
Bu projenin amacı, piyasada hangi hisse senetlerinin hareketli olduğunu öğrenmek ve bunların ayrıntılarını gösterge tablonuzda görmektir.
Elimizde şirket isimleri var, ancak işlem detaylarını almak için şirketin hisse senedi sembolüne ihtiyacımız var.
Hint Şirketlerinin ayrıntılarını ve haberlerini çıkardığım için harici bir veri tabanı kullanacağım. Nifty 500 şirket (bir CSV dosyası).
Her şirket için, onu panda kullanan şirketler listesinde arayacağız ve ardından aşağıdakileri kullanarak borsa istatistiklerini yakalayacağız. Yahoo Finans kütüphane.
Yazara göre resim
Burada dikkat etmeniz gereken bir şey, her hisse senedi sembolünden sonra, onu borsaya geçirmeden önce bir “.NS” eklediğimdir. Ticker
sınıfı yfinance
kütüphane. Bunun nedeni, Hint NSE hisse senedi sembollerinin bir .NS
son ek yfinance
.
Ve vızıldayan hisse senetleri aşağıdaki gibi bir veri çerçevesinde ortaya çıkacaktır:
Yazara göre resim
İşte! bu harika değil mi? Doğru hisse senetleri ile sizi doğru yöne yönlendirebilecek kadar basit ama derin bir uygulama.
Şimdi daha erişilebilir hale getirmek için, Streamlit kullanarak az önce yazdığımız koddan bir web uygulaması oluşturabiliriz.
Adım 4 — Streamlit kullanarak bir web uygulaması oluşturma
Bir editöre geçmenin ve NLP uygulaması için yeni bir proje ve sanal ortam yaratmanın zamanı geldi.
Streamlit'i kullanmaya başlamak, bu tür demo veri uygulamaları için son derece kolaydır. Streamlit'in kurulu olduğundan emin olun.
pip install Streamlit
Şimdi app.py adında yeni bir dosya oluşturalım ve uygulamayı hazır hale getirmek için fonksiyonel kod yazmaya başlayalım.
Gerekli tüm kitaplıkları en üstte içe aktarın.
import pandas as pdimport requestsimport spacyimport streamlit as stfrom bs4 import BeautifulSoupimport yfinance as yf
Uygulamanıza bir başlık ekleyin:
st.title('Buzzing Stocks :zap:')
Çalıştırarak uygulamanızı test edin streamlit run app.p
y terminalinizde. Web tarayıcınızda bir uygulama açmalıdır.
Birden çok kaynaktan veri yakalamak için bazı ekstra işlevler ekledim. Artık uygulamaya istediğiniz bir RSS besleme URL'sini ekleyebilirsiniz ve veriler işlenecek ve trend olan hisse senetleri bir veri çerçevesinde görüntülenecektir.
Tüm kod tabanına erişmek için depoma buradan göz atabilirsiniz:
Daha verimli ve kullanışlı hale getirmek için birden çok stil öğesi, farklı veri kaynağı ve diğer işleme türleri ekleyebilirsiniz.
Uygulamam şu anki durumunda banner'daki resme benziyor.
Beni adım adım takip etmek istiyorsanız, bu uygulamayı burada kodladığımı izleyin:
Sonraki adımlar!
Bir finansal kullanım senaryosu seçmek yerine, istediğiniz başka bir uygulamayı da seçebilirsiniz. Sağlık, e-ticaret, araştırma ve diğerleri. Tüm endüstriler belgelerin işlenmesini ve önemli varlıkların çıkarılmasını ve bağlanmasını gerektirir. Başka bir fikir deneyin.
Basit bir fikir, bir araştırma makalesinin tüm önemli varlıklarını çıkarmak ve ardından Google Arama API'sını kullanarak bir bilgi grafiği oluşturmaktır.
Ayrıca, hisse senedi haber akışı uygulamasını başka bir düzeye taşımak istiyorsanız, alım satım sinyalleri oluşturmak için bazı ticaret algoritmaları da ekleyebilirsiniz.
Seni hayal gücünle vahşi olmaya teşvik ediyorum.
Benimle nasıl bağlantı kurabilirsin!
Bu gönderiyi beğendiyseniz ve bu tür içeriklerin daha fazlasını görmek istiyorsanız, abone olabilirsiniz. bültenim or benim YouTube kanalım İnsanın inşa edebileceği çok faydalı ve hızlı projeleri paylaşmaya devam edeceğim.
Programlamaya yeni başlayan biriyseniz veya veri bilimi veya makine öğrenimi alanına girmek istiyorsanız, adresindeki kursuma göz atabilirsiniz. WIP Lane Akademisi.
Elliot Gunn'a teşekkürler.
Bio: harshit tyagi web teknolojileri ve veri biliminde (diğer adıyla full-stack veri bilimi) birleştirilmiş deneyime sahip bir mühendistir. 1000'den fazla AI/Web/Data Science adayına danışmanlık yaptı ve veri bilimi ve ML mühendisliği öğrenme yolları tasarlıyor. Daha önce Harshit, Yale, MIT ve UCLA'daki araştırmacı bilim adamları ile veri işleme algoritmaları geliştirdi.
orijinal. İzinle yeniden yayınlandı.
İlgili:
- '
- "
- &
- erişim
- Action
- algoritmalar
- Türkiye
- arasında
- api
- uygulamayı yükleyeceğiz
- Uygulama
- uygulamaları
- uygulamalar
- etrafında
- Otantik
- gerçeklik
- Oto
- tarayıcı
- inşa etmek
- bina
- satın almak
- Uğultu
- sınıflandırma
- kod
- Şirketler
- şirket
- Bileşik
- içerik
- Oluşturma
- akım
- Şu anki durum
- gösterge paneli
- veri
- veri işleme
- veri bilimi
- veritabanı
- gün
- anlaşma
- derin öğrenme
- ayrıntı
- geliştirmek
- mesafe
- evraklar
- etki
- İlaçlar
- e-ticaret
- editör
- mühendis
- Mühendislik
- İngilizce
- çevre
- vb
- Excel
- deneyim
- keşif
- Yüz
- maliye
- mali
- Ad
- takip et
- Google Arama
- harika
- baş
- haber başlıkları
- sağlık
- okuyun
- Ne kadar
- HTTPS
- Fikir
- görüntü
- Endüstri
- sanayi
- bilgi
- anlayışlar
- kurumları
- Internet
- IT
- bilgi
- dil
- Diller
- önemli
- ÖĞRENİN
- öğrendim
- öğrenme
- seviye
- Kaldıraç
- Kütüphane
- LINK
- Liste
- Listeler
- yük
- yerel
- makine öğrenme
- büyük
- pazar
- piyasa Haberleri
- orta
- Microsoft
- İLE
- ML
- model
- hareket
- isimleri
- haber
- nlp
- açık
- Fırsatlar
- sipariş
- Diğer
- Diğer
- kâğıt
- oyuncu
- portföy
- POS
- mevcut
- fiyat
- Programlama
- proje
- Projeler
- Python
- pytorch
- Çiğ
- İlişkiler
- araştırma
- yanıt
- koşmak
- ölçek
- ölçekleme
- Bilim
- bilim adamları
- Ara
- satmak
- Basit
- becerileri
- So
- ÇÖZMEK
- hız
- başlama
- başladı
- Eyalet
- istatistik
- Stok
- Borsa
- Stocks
- hikayeler
- başarılı
- Destekler
- sistem
- Teknolojileri
- tensorflow
- test
- Test yapmak
- zaman
- simge
- dizgeciklere
- Jeton
- üst
- Ticaret
- Trading
- uzanımlı
- öğretici
- UCLA
- us
- Video
- Sanal
- İzle
- ağ
- web tarayıcı
- DSÖ
- çalışır
- yazı yazıyor
- X
- XML
- Youtube