NLP for Market Analysis — সংবাদ এবং সামাজিক সেন্টিমেন্ট প্রক্রিয়াকরণ
প্রাকৃতিক ভাষা প্রক্রিয়াকরণ ক্রিপ্টো ট্রেডিংয়ে গুরুত্বপূর্ণ হয়ে উঠেছে। সংবাদ ঘোষণা, সামাজিক মিডিয়া সেন্টিমেন্ট এবং নিয়ন্ত্রক ফিসফিস চেইন সংকেত প্রকাশের আগেই বাজারকে নাড়িয়ে দেয়। এই গাইডটি আপনাকে অপ্রকৃত টেক্সট থেকে কার্যকরী বুদ্ধিমত্তা আহরণের মাধ্যমে পরিচালিত করবে — একই কৌশল যা Smart Money API-তে সেন্টিমেন্ট স্কোরিংকে শক্তি দেয়।
মূল অন্তর্দৃষ্টি: সেন্টিমেন্ট একা শুধুমাত্র 48% স্বল্পমেয়াদী চলাচল ভবিষ্যদ্বাণী করে। কিন্তু যখন তিমি ঐক্যমত এবং ফান্ডিং রেটের সাথে সংযুক্ত হয়? সেন্টিমেন্ট-নিশ্চিত ট্রেডগুলি 61% নির্ভুলতা অর্জন করে। এটি মাল্টি-মোডাল সংকেতের শক্তি।
সেন্টিমেন্ট বিশ্লেষণ ভিত্তি
লেক্সিকন-ভিত্তিক বনাম মেশিন লার্নিং পদ্ধতি
লেক্সিকন-ভিত্তিক: ইতিবাচক/নেতিবাচক শব্দের অভিধান (VADER, TextBlob)। দ্রুত, ব্যাখ্যাযোগ্য, কিন্তু ব্যঙ্গ এবং প্রসঙ্গের সাথে সংগ্রাম করে।
থেকে nltk.sentiment আমদানি SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
texts = [
"Bitcoin surged 15% on bullish institutional adoption news",
"Crash incoming — expect 40% dump based on fundrat neg",
"Mixed signals but whales are accumulating ETH"
]
জন্য text মধ্যে texts:
scores = analyzer.polarity_scores(text)
print(f"{text[:40]}... → {scores['compound']:.2f}")
আউটপুট: কম্পাউন্ড স্কোর -1 (সবচেয়ে নেতিবাচক) থেকে +1 (সবচেয়ে ইতিবাচক) পর্যন্ত। 0.65 স্কোর ইতিবাচক সেন্টিমেন্ট নির্দেশ করে, -0.42 নেতিবাচক।
ML-ভিত্তিক: ক্লাসিফায়ার প্রশিক্ষণ (Naive Bayes, SVM) বা প্রি-ট্রেনড ট্রান্সফর্মার ব্যবহার করুন (BERT, RoBERTa)। আরও নির্ভুল কিন্তু লেবেলযুক্ত ডেটা প্রয়োজন।
ক্রিপ্টোকারেন্সি সংবাদ প্রক্রিয়াকরণ
রিয়েল-টাইম সংবাদ সমষ্টি
প্রধান উৎস থেকে শিরোনাম টানুন (CoinTelegraph, BlockBeats, Cointelegraph RSS, Reddit):
আমদানি feedparser
থেকে datetime আমদানি datetime, timedelta
feeds = [
"https://cointelegraph.com/feed",
"https://www.coindesk.com/arc/outboundfeeds/rss/",
]
articles = []
জন্য feed_url মধ্যে feeds:
feed = feedparser.parse(feed_url)
জন্য entry মধ্যে feed.entries[:10]:
articles.append({
"title": entry.title,
"published": entry.published_parsed,
"summary": entry.summary,
})
নামকৃত সত্তা স্বীকৃতি (NER) ক্রিপ্টো সম্পদের জন্য
কোন টোকেন/এক্সচেঞ্জ উল্লেখ করা হয়েছে তা বের করুন:
আমদানি spacy
nlp = spacy.load("en_core_web_sm")
crypto_entities = {"Bitcoin", "BTC", "Ethereum", "ETH", "Solana", "SOL"}
text = "Bitcoin surged 12% as Ethereum whales accumulated large amounts"
doc = nlp(text)
জন্য token মধ্যে doc:
যদি token.text মধ্যে crypto_entities:
print(f"{token.text} found")
সামাজিক সেন্টিমেন্ট খনন
Twitter/X API ইন্টিগ্রেশন
নির্দিষ্ট সম্পদের জন্য উল্লেখ, সেন্টিমেন্ট এবং জড়িততা ট্র্যাক করুন:
আমদানি tweepy
থেকে transformers আমদানি pipeline
sentiment_pipeline = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
client = tweepy.Client(bearer_token=TWITTER_BEARER)
query = "Bitcoin -is:retweet lang:en"
tweets = client.search_recent_tweets(query=query, max_results=100)
sentiments = []
জন্য tweet মধ্যে tweets.data:
result = sentiment_pipeline(tweet.text)[0]
sentiments.append({
"text": tweet.text,
"label": result["label"],
"score": result["score"]
})
avg_sentiment = sum(s["score"] for s in sentiments) / len(sentiments)
print(f"Bitcoin sentiment: {avg_sentiment:.2f}")
Reddit Community Sentiment
Monitor r/cryptocurrency, r/btc, r/ethtrader for retail sentiment shifts:
import praw
reddit = praw.Reddit(client_id=ID, client_secret=SECRET, user_agent=AGENT)
subreddit = reddit.subreddit("cryptocurrency")
for post in subreddit.hot(limit=50):
if post.created_utc > (time.time() - 86400):
sentiment = sentiment_pipeline(post.title)[0]
signal_strength = post.score * sentiment["score"]
Building a Production Sentiment Engine
Transformer-Based Sentiment (BERT)
Pre-trained BERT models are far more accurate than lexicon-based approaches:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "ProsusAI/finbert"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
def get_finbert_sentiment(text):
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
probabilities = torch.softmax(logits, dim=1)
sentiment_idx = torch.argmax(probabilities)
confidence = probabilities[0, sentiment_idx].item()
return {"sentiment": ["negative", "neutral", "positive"][sentiment_idx], "confidence": confidence}
Real-Time Sentiment Aggregation
Combine multiple signals into a daily sentiment score:
def compute_daily_sentiment(symbol):
news_articles = fetch_recent_news(symbol)
news_sentiments = [get_finbert_sentiment(a["title"]) for a in news_articles]
news_score = np.mean([s["confidence"] for s in news_sentiments])
tweets = fetch_tweets_last_6h(symbol)
twitter_sentiments = [get_finbert_sentiment(t) for t in tweets]
twitter_score = np.mean([s["confidence"] for s in twitter_sentiments])
reddit_posts = fetch_reddit_hot(symbol)
reddit_sentiments = [get_finbert_sentiment(p) for p in reddit_posts]
reddit_score = np.mean([s["confidence"] for s in reddit_sentiments])
composite = (news_score * 0.4 + twitter_score * 0.35 + reddit_score * 0.25)
return composite
Integrating with Smart Money API
Add sentiment as a feature to your confirmation system:
def confirm_with_sentiment(symbol, direction):
response = requests.get(
f"https://api.smartmoneyapi.com/v1/confirm?symbol={symbol}&direction={direction}",
headers={"X-API-Key": API_KEY}
)
smart_money = response.json()
sentiment_score = compute_daily_sentiment(symbol)
if (direction == "long" and sentiment_score > 0.55):
boost = 0.05
elif (direction == "short" and sentiment_score < 0.45):
boost = 0.05
else:
boost = 0
final_composite = min(smart_money["composite"] + boost, 1.0)
return {"composite": final_composite, "sentiment_boost": boost}
অ্যাডভান্সড এনএলপি টেকনিক্স
অ্যাস্পেক্ট-বেসড সেন্টিমেন্ট অ্যানালাইসিস
সামগ্রিক সেন্টিমেন্টের বদলে, নির্দিষ্ট অ্যাস্পেক্ট সম্পর্কে সেন্টিমেন্ট বের করুন: "বিটকয়িন টেকনোলজি দারুণ, কিন্তু অ্যাডপশন ধীর।" ফিচার-লেভেল অপিনিয়ন বের করুন।
কজালিটি ডিটেকশন
কারণমূলক দাবি চিহ্নিত করুন: "XYZ এর কারণে, প্রাইস চলবে।" হাইপ এবং ফান্ডামেন্টাল নিউজ আলাদা করতে একটি ক্লাসিফায়ার ট্রেন করুন।
সেন্টিমেন্ট টাইম সিরিজ
সময়ের সাথে সেন্টিমেন্ট ড্রিফট ট্র্যাক করুন। +০.৬৫ থেকে -০.৪৫ এ হঠাৎ পরিবর্তন একটি রিভার্সাল সিগন্যাল যা নোট করার মতো।
সেন্টিমেন্টকে স্মার্ট মানি সিগন্যালের সাথে কম্বাইন করুন
স্মার্ট মানি API কনফিডেন্স স্কোর প্রদান করে যা হোয়েল কনসেনসাস এবং অন-চেইন মেট্রিক্সের বিরুদ্ধে ভ্যালিডেট করা। আপনার এজ কনফার্ম করতে এবং ৪-৬% দ্বারা উইন রেট বাড়াতে সেন্টিমেন্ট অ্যানালাইসিস যোগ করুন।
ফ্রি শুরু করুন →