ট্রেন্ডিং বিষয় বা ট্যাগগুলি গণনা করার সর্বোত্তম উপায় কী?


183

অনেক সাইট "গত 24 ঘন্টা সবচেয়ে জনপ্রিয় বিষয়" এর মতো কিছু পরিসংখ্যান সরবরাহ করে। উদাহরণস্বরূপ, টপিক্স ডট কম এটি "নিউজ ট্রেন্ডস" বিভাগে এটি দেখায়। সেখানে, আপনি যে বিষয়গুলিতে দ্রুততম উল্লেখযোগ্য সংখ্যা রয়েছে তা দেখতে পাচ্ছেন।

আমিও একটি বিষয়ের জন্য এই জাতীয় "buzz" গণনা করতে চাই। আমি এই কিভাবে করতে পারে? অ্যালগরিদমের এমন বিষয়গুলির ওজন করা উচিত যা সর্বদা কম গরম থাকে। সাধারণত যে বিষয়গুলি (প্রায়) দুপুরে উল্লেখ করা হয় সেগুলি হটেস্ট হওয়া উচিত।

গুগল "হট ট্রেন্ডস" অফার করে, টপিক্স ডট কম দেখায় "হট টপিকস", ফেভ.অর.ইট "কীওয়ার্ড ট্রেন্ডস" দেখায় - এই সমস্ত পরিষেবাদির মধ্যে একটি বিষয় মিল রয়েছে: তারা কেবল আপনাকে আসন্ন ট্রেন্ডগুলি দেখায় যা এই মুহুর্তে অস্বাভাবিক গরম।

"ব্রিটনি স্পিয়ার্স", "আবহাওয়া" বা "প্যারিস হিল্টন" এর মতো পদগুলি এই তালিকাগুলিতে উপস্থিত হবে না কারণ তারা সর্বদা গরম এবং ঘন ঘন থাকে। এই নিবন্ধটিকে এটিকে "দ্য ব্রিটনি স্পিয়ারস প্রব্লেম" বলা হয়েছে।

আমার প্রশ্ন: আপনি কীভাবে একটি অ্যালগরিদম কোড করতে পারেন বা এই সমস্যাটি সমাধান করতে একটি বিদ্যমান ব্যবহার করতে পারেন? গত 24 ঘন্টা অনুসন্ধান করা কীওয়ার্ডগুলির সাথে একটি তালিকা থাকা, অ্যালগরিদমটি আপনাকে 10 (উদাহরণস্বরূপ) সবচেয়ে উষ্ণতম দেখানো উচিত।

আমি জানি, উপরের নিবন্ধে, এক ধরণের অ্যালগোরিদমের উল্লেখ রয়েছে। আমি এটি পিএইচপি কোড করার চেষ্টা করেছি কিন্তু আমি মনে করি না এটি কার্যকর হবে। এটি সর্বাধিক সন্ধান করে, তাই না?

আমি আশা করি আপনি আমাকে সহায়তা করতে পারেন (কোডিং উদাহরণগুলি দুর্দান্ত হবে)।


3
আকর্ষণীয় প্রশ্ন, লোকেরা কী বলতে চায় তা জানতে আগ্রহী।
এমএমসিডল

14
বন্ধ করার কোনও কারণ নেই, এটি একটি বৈধ প্রশ্ন
টিস্টম্পার

1
এই ঠিক একই প্রশ্ন এবং তিনি এমনকি যে বিবৃত! মানুষ কেন এটি উত্সাহিত করছে!
ড্যারিল হেইন

3
আপনি কোন ধরণের ফলাফলের সন্ধান করছেন সে সম্পর্কে আমি কিছুটা বিভ্রান্ত। নিবন্ধটি ইঙ্গিত করে বলে মনে হচ্ছে যে "ব্রিটনি স্পিয়ারস" ধারাবাহিকভাবে "হট" তালিকায় পাওয়া যাবে কারণ এত লোকেরা এই শব্দটির সন্ধান করে তবে আপনার প্রশ্নে বলা হয়েছে যে এটি তালিকায় উপস্থিত হবে না কারণ এই শব্দটির অনুসন্ধানের সংখ্যাটি করে সময়ের সাথে সাথে খুব বেশি বৃদ্ধি না করা (তারা উচ্চ থাকে তবে স্থির থাকে)। আপনি কোন ফলাফলটি অর্জনের চেষ্টা করছেন? "ব্রিটনি স্পিয়ারস" র‌্যাঙ্কটি উচ্চ বা নিম্ন হওয়া উচিত?
জেমস

1
@ ই জেমস, "ব্রিটনি স্পিয়ারস" এর উচ্চমানের হওয়া উচিত নয় কারণ তিনি একটি উচ্চতর অনুসন্ধান শব্দ এবং তিনি একটি উচ্চ গতিতে অনুসন্ধানের শব্দগুলি সন্ধান করছেন।
এমএমসিডল

উত্তর:


103

এই সমস্যাটিকে জেড-স্কোর বা স্ট্যান্ডার্ড স্কোরের জন্য আহ্বান জানানো হয়েছে, যা historicalতিহাসিক গড়কে বিবেচনা করবে, যেমন অন্যান্য লোকেরা উল্লেখ করেছেন, তবে এই historicalতিহাসিক ডেটার মানক বিচ্যুতিও কেবল গড় ব্যবহারের চেয়ে আরও দৃust় করে তোলে।

আপনার ক্ষেত্রে একটি জেড-স্কোর নিম্নলিখিত সূত্র দ্বারা গণনা করা হয়, যেখানে প্রবণতাটি ভিউ / দিনের মতো হার হবে।

z-score = ([current trend] - [average historic trends]) / [standard deviation of historic trends]

যখন একটি জেড-স্কোর ব্যবহার করা হয়, জেড-স্কোরটি তত বেশি বা অস্বাভাবিক প্রবণতাটি কম বাড়ে, উদাহরণস্বরূপ যদি জেড-স্কোরটি অত্যন্ত ইতিবাচক হয় তবে প্রবণতাটি অস্বাভাবিকভাবে বাড়ছে, যদি এটি অত্যন্ত নেতিবাচক হয় তবে এটি অস্বাভাবিকভাবে পতিত হয় । সুতরাং একবার আপনি সমস্ত পরীক্ষার্থীর প্রবণতার জন্য জেড-স্কোর গণনা করুন সর্বোচ্চ 10 জেড-স্কোর সবচেয়ে অস্বাভাবিকভাবে বৃদ্ধি পাওয়া জেড-স্কোরগুলির সাথে সম্পর্কিত।

জেড-স্কোর সম্পর্কে আরও তথ্যের জন্য দয়া করে উইকিপিডিয়া দেখুন।

কোড

from math import sqrt

def zscore(obs, pop):
    # Size of population.
    number = float(len(pop))
    # Average population value.
    avg = sum(pop) / number
    # Standard deviation of population.
    std = sqrt(sum(((c - avg) ** 2) for c in pop) / number)
    # Zscore Calculation.
    return (obs - avg) / std

নমুনা আউটপুট

>>> zscore(12, [2, 4, 4, 4, 5, 5, 7, 9])
3.5
>>> zscore(20, [21, 22, 19, 18, 17, 22, 20, 20])
0.0739221270955
>>> zscore(20, [21, 22, 19, 18, 17, 22, 20, 20, 1, 2, 3, 1, 2, 1, 0, 1])
1.00303599234
>>> zscore(2, [21, 22, 19, 18, 17, 22, 20, 20, 1, 2, 3, 1, 2, 1, 0, 1])
-0.922793112954
>>> zscore(9, [1, 2, 0, 3, 1, 3, 1, 2, 9, 8, 7, 10, 9, 5, 2, 4, 1, 1, 0])
1.65291949506

মন্তব্য

  • আপনি স্লাইডিং উইন্ডো দিয়ে এই পদ্ধতিটি ব্যবহার করতে পারেন (অর্থাত্ শেষ ৩০ দিন) আপনি যদি খুব বেশি ইতিহাস বিবেচনায় না নিতে চান তবে এটি স্বল্পমেয়াদী প্রবণতাগুলিকে আরও প্রকট করে তুলবে এবং প্রক্রিয়াজাতকরণের সময়টি কেটে ফেলতে পারে।

  • আপনি প্রতিদিনের ক্রমবর্ধমান / হ্রাসের জন্য অস্বাভাবিক মূল্যবোধগুলি সনাক্ত করতে এক দিন থেকে পরের দিন থেকে দেখা পরিবর্তনের মতো মানগুলির জন্য জেড-স্কোরও ব্যবহার করতে পারেন। এটি প্রতিদিনের গ্রাফের theাল বা ভিউর ব্যবহারের মতো।

  • আপনি যদি জনসংখ্যার বর্তমান আকার, জনসংখ্যার বর্তমান মোট এবং জনসংখ্যার x ^ 2 এর বর্তমান পরিমাণের উপর নজর রাখেন তবে আপনাকে এই মানগুলি পুনরায় গণনা করার দরকার নেই, কেবলমাত্র সেগুলি আপডেট করুন এবং তাই আপনাকে কেবলমাত্র প্রয়োজন ইতিহাসের জন্য এই মানগুলি রাখুন, প্রতিটি ডাটা মান নয়। নিম্নলিখিত কোডটি এটি দেখায়।

    from math import sqrt
    
    class zscore:
        def __init__(self, pop = []):
            self.number = float(len(pop))
            self.total = sum(pop)
            self.sqrTotal = sum(x ** 2 for x in pop)
        def update(self, value):
            self.number += 1.0
            self.total += value
            self.sqrTotal += value ** 2
        def avg(self):
            return self.total / self.number
        def std(self):
            return sqrt((self.sqrTotal / self.number) - self.avg() ** 2)
        def score(self, obs):
            return (obs - self.avg()) / self.std()
    
  • এই পদ্ধতিটি ব্যবহার করে আপনার কাজের প্রবাহ নিম্নরূপ হবে। প্রতিটি বিষয়, ট্যাগ, বা পৃষ্ঠার জন্য একটি ভাসমান পয়েন্ট ফিল্ড তৈরি করুন, মোট দিনের সংখ্যা, দেখার সমষ্টি এবং আপনার ডাটাবেসে স্কোয়ার ভিউগুলির যোগফল। আপনার যদি historicতিহাসিক ডেটা থাকে, তবে এই ডেটাটি ব্যবহার করে এই ক্ষেত্রগুলি সূচনা করুন, অন্যথায় শূন্যে শুরু করুন। প্রতিটি দিন শেষে, তিনটি ডাটাবেস ক্ষেত্রে সংরক্ষিত historicতিহাসিক ডেটার বিরুদ্ধে দিনের সংখ্যাটি ব্যবহার করে জেড-স্কোর গণনা করুন। সর্বাধিক এক্স জেড-স্কোর সহ বিষয়গুলি, ট্যাগগুলি বা পৃষ্ঠাগুলি হ'ল আপনার এক্স "সবচেয়ে জনপ্রিয় ট্রেন্ডস"। দিনের মান সহ 3 টি ক্ষেত্রের অবশেষে আপডেট করুন এবং আগামীকাল প্রক্রিয়াটি পুনরাবৃত্তি করুন।

নতুন সংযোজন

উপরোক্ত আলোচিত সাধারণ জেড স্কোরগুলি তথ্যের ক্রমটিকে বিবেচনা করে না এবং তাই '1' বা '9' এর পর্যবেক্ষণের জন্য জেড-স্কোরটি ক্রমটির বিপরীতে একই পরিমাণে [1, 1, 1, 1 , 9, 9, 9, 9]। স্পষ্টতই ট্রেন্ড সন্ধানের জন্য, সর্বাধিক বর্তমান ডেটাতে পুরানো ডেটার চেয়ে বেশি ওজন থাকা উচিত এবং তাই আমরা '1' পর্যবেক্ষণকে '9' পর্যবেক্ষণের চেয়ে আরও বড় আকারের স্কোর করতে চাই। এটি অর্জনের জন্য আমি একটি ভাসমান গড় জেড-স্কোর প্রস্তাব করি। এটি পরিষ্কার হওয়া উচিত যে এই পদ্ধতিটি পরিসংখ্যানগতভাবে সাবলীল হওয়ার গ্যারান্টিযুক্ত নয় তবে প্রবণতা সন্ধানের জন্য বা এর অনুরূপ জন্য কার্যকর হওয়া উচিত। স্ট্যান্ডার্ড জেড-স্কোর এবং ভাসমান গড় জেড-স্কোরের মধ্যে প্রধান পার্থক্য হ'ল গড় জনসংখ্যা মূল্য এবং গড় জনসংখ্যা মান বর্গক্ষেত্র গণনা করতে ভাসমান গড়ের ব্যবহার। বিশদ জন্য কোড দেখুন:

কোড

class fazscore:
    def __init__(self, decay, pop = []):
        self.sqrAvg = self.avg = 0
        # The rate at which the historic data's effect will diminish.
        self.decay = decay
        for x in pop: self.update(x)
    def update(self, value):
        # Set initial averages to the first value in the sequence.
        if self.avg == 0 and self.sqrAvg == 0:
            self.avg = float(value)
            self.sqrAvg = float((value ** 2))
        # Calculate the average of the rest of the values using a 
        # floating average.
        else:
            self.avg = self.avg * self.decay + value * (1 - self.decay)
            self.sqrAvg = self.sqrAvg * self.decay + (value ** 2) * (1 - self.decay)
        return self
    def std(self):
        # Somewhat ad-hoc standard deviation calculation.
        return sqrt(self.sqrAvg - self.avg ** 2)
    def score(self, obs):
        if self.std() == 0: return (obs - self.avg) * float("infinity")
        else: return (obs - self.avg) / self.std()

নমুনা IO

>>> fazscore(0.8, [1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9]).score(1)
-1.67770595327
>>> fazscore(0.8, [1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9]).score(9)
0.596052006642
>>> fazscore(0.9, [2, 4, 4, 4, 5, 5, 7, 9]).score(12)
3.46442230724
>>> fazscore(0.9, [2, 4, 4, 4, 5, 5, 7, 9]).score(22)
7.7773245459
>>> fazscore(0.9, [21, 22, 19, 18, 17, 22, 20, 20]).score(20)
-0.24633160155
>>> fazscore(0.9, [21, 22, 19, 18, 17, 22, 20, 20, 1, 2, 3, 1, 2, 1, 0, 1]).score(20)
1.1069362749
>>> fazscore(0.9, [21, 22, 19, 18, 17, 22, 20, 20, 1, 2, 3, 1, 2, 1, 0, 1]).score(2)
-0.786764452966
>>> fazscore(0.9, [1, 2, 0, 3, 1, 3, 1, 2, 9, 8, 7, 10, 9, 5, 2, 4, 1, 1, 0]).score(9)
1.82262469243
>>> fazscore(0.8, [40] * 200).score(1)
-inf

হালনাগাদ

ডেভিড কেম্প সঠিকভাবে উল্লেখ করেছেন যে, যদি ধ্রুবক মানগুলির একটি সিরিজ দেওয়া হয় এবং অন্য পর্যালোচিত মানের জন্য একটি zscore যা অন্যান্য মানগুলির থেকে পৃথক হয় তবে অনুরোধ করা হয় ফলাফলটি সম্ভবত শূন্য নয়। আসলে প্রত্যাবর্তিত মানটি অনন্ত হওয়া উচিত। সুতরাং আমি এই লাইনটি পরিবর্তন করেছি,

if self.std() == 0: return 0

প্রতি:

if self.std() == 0: return (obs - self.avg) * float("infinity")

এই পরিবর্তনটি ফ্যাজস্কোর সমাধান কোডে প্রতিফলিত হয়। যদি কেউ অসীম মূল্যবোধের সাথে ডিল করতে না চায় তবে একটি গ্রহণযোগ্য সমাধান এর পরিবর্তে লাইনটি পরিবর্তন করতে পারে:

if self.std() == 0: return obs - self.avg

1
না, নিম্নলিখিত কোডটিতে আপনার কোডটির একটি ছোট ভুল রয়েছে। $ z_score = $ hits_today - ($ গড়_হিত্স_পার_ডে / $ স্ট্যান্ডার্ড_ডিয়েশন); এটি হওয়া উচিত: $ z_score = (its hits_today- $ গড়_হিট_পার_ডে) / $ স্ট্যান্ডার্ড_ডিয়েশন; বন্ধনী পরিবর্তনের নোট করুন।
নিক্সুজ

1
@ নিক্সুজ - আমি কি কিছু মিস করছি: ফ্যাজস্কোর (0.8, মানচিত্র (ল্যাম্বদা x: 40, পরিসীমা (0,200)))। স্কোর (1) == 0 (কোনও মানের জন্য)?
kͩeͣmͮpͥ ͩ

1
@ নিক্সাস - ভেবেছিলাম আমি কবর থেকে এটিকে খনন করতে পারি। আপনি কি এইটির পিএইচপি বাস্তবায়ন পুনরায় পোস্ট করতে পারবেন? pasteলিঙ্ক কাজ হবে বলে মনে হচ্ছে না ... ধন্যবাদ!
ড্রয়নেস

1
যে কেউ এটি পছন্দ করতে পারে, আমার এখন এটি করার জন্য এসকিউএল অনুসন্ধান রয়েছে।
তুমিলিহা

1
এখানে ক্ষয়টি হ'ল পাল্টা স্বজ্ঞাত; আপনি যদি 2 টি মান সন্নিবেশ করান তবে 0.8 এর ক্ষয় সহ [10, 20] বলুন, AVG 10 * 0.8 + 20 * 0.2 = 12 হয়। আপনি 15 এর উপরে একটি মান আশা করবেন, যেহেতু ক্ষয় হয় যদি 20 এর 10 এর বেশি ওজন হয় have নাম্পি.এভারেজের ওজনযুক্ত গড় ব্যবহার করে আরও অনেক ভাল বিকল্প পাওয়া যায়, যেখানে আপনি ওজন সহ সমান্তরাল তালিকা তৈরি করেন। উদাহরণস্বরূপ: ডেটা = রেঞ্জ (10,30,10) ক্ষয় = 0.8 ডেকে_উইটস = [ক্ষয় ** এ ইন রেঞ্জের জন্য (লেন (ডেটা), 0, -1)] এনপি.এভারেজ প্রিন্ট করুন (ডেটা, ওজন = ক্ষয়_উইট)
জেরোইন

93

আপনার একটি অ্যালগরিদম দরকার যা একটি বিষয়ের গতিবেগকে পরিমাপ করে - বা অন্য কথায়, যদি আপনি এটি গ্রাফ করেন তবে আপনি যেগুলি অবিশ্বাস্য হারে যাচ্ছেন তা দেখাতে চান।

এটি ট্রেন্ড লাইনের প্রথম ডেরাইভেটিভ এবং আপনার সামগ্রিক গণনার একটি ভারী গুণক হিসাবে অন্তর্ভুক্ত করা কঠিন নয়।

নিয়মমাফিক করা

একটি কৌশল যা করতে হবে তা হ'ল আপনার সমস্ত ডেটা স্বাভাবিক করা। আপনি যে প্রতিটি বিষয় অনুসরণ করছেন তার জন্য, খুব নীচে পাস ফিল্টার রাখুন যা সেই বিষয়ের বুনিয়াদটিকে সংজ্ঞায়িত করে। এখন সেই বিষয়ে প্রতিটি ডাটা পয়েন্ট আসে যা স্বাভাবিক করা উচিত - এর বেসলাইনটি বিয়োগ করুন এবং আপনি আপনার সমস্ত বিষয় 0 এর নিকটে পাবেন এবং লাইনের উপরে এবং নীচে স্পাইক সহ with পরিবর্তে আপনি সিগন্যালটিকে তার বেসলাইন দৈর্ঘ্যের দ্বারা বিভক্ত করতে চাইতে পারেন, যা সংকেতকে প্রায় ১.০ এ পৌঁছে দেবে - এটি কেবল সমস্ত সংকেত একে অপরের সাথে সামঞ্জস্য করে না (বেসলাইনটিকে স্বাভাবিক করে তোলে), তবে স্পাইকগুলিও স্বাভাবিক করে তোলে। ব্রিটনি স্পাইকটি অন্য কারওর স্পাইকের চেয়ে মাপের আকার হতে চলেছে, তবে এর অর্থ এই নয় যে আপনার দিকে মনোযোগ দেওয়া উচিত - স্পাইকটি তার বেসলাইনটির তুলনায় খুব ছোট হতে পারে।

আহরণ করা

একবার আপনি সমস্ত কিছু স্বাভাবিক করার পরে, প্রতিটি বিষয়ের opeালুটি বের করুন। পরপর দুটি পয়েন্ট নিন এবং পার্থক্যটি পরিমাপ করুন। একটি ইতিবাচক পার্থক্য প্রবণতা হয়, একটি নেতিবাচক পার্থক্য নীচে প্রবণতা হয়। তারপরে আপনি সাধারণীকরণের পার্থক্যগুলি তুলনা করতে পারেন এবং অন্যান্য বিষয়গুলির তুলনায় কী বিষয়গুলি জনপ্রিয়তার দিকে shootingর্ধ্বমুখী হয়ে উঠছে তা খুঁজে পেতে পারেন - প্রতিটি বিষয় যথাযথভাবে তার নিজস্ব 'সাধারণ' এর সাথে উপযুক্ত আকারযুক্ত যা অন্য বিষয়গুলির চেয়ে আলাদা মানের ক্রম হতে পারে।

সমস্যাটি এটি সত্যই প্রথম পাস। আরও আরও উন্নত কৌশল রয়েছে যা আপনাকে ব্যবহার করতে হবে (বেশিরভাগ উপরে অন্যান্য সংযুক্ত অ্যালগরিদমের সাথে উপরের সংমিশ্রণ, আপনার প্রয়োজন অনুসারে ওজনযুক্ত) তবে আপনাকে শুরু করার জন্য এটি পর্যাপ্ত পরিমাণে হওয়া উচিত।

নিবন্ধ সম্পর্কিত

নিবন্ধটি বিষয় প্রবণতা সম্পর্কিত, তবে কী কী গরম এবং কী নয় তা গণনা কিভাবে করা যায় তা নয়, লাইকোস এবং গুগলের মতো জায়গাগুলিতে এই জাতীয় অ্যালগরিদমকে কীভাবে বিপুল পরিমাণে প্রক্রিয়া করা উচিত তা কীভাবে প্রক্রিয়াকরণ করা যায় তা সম্পর্কে নয়। প্রতিটি বিষয়কে একটি পাল্টা দেওয়ার জন্য প্রয়োজনীয় স্থান এবং সময় প্রয়োজন এবং যখন কোনও অনুসন্ধানের মধ্য দিয়ে যায় তখন প্রতিটি বিষয়ের কাউন্টার খুঁজে পাওয়া বিশাল। এই নিবন্ধটি এই জাতীয় কোনও কাজ করার চেষ্টা করার সময় যে সমস্ত চ্যালেঞ্জগুলির মুখোমুখি হয় সে সম্পর্কে। এটিতে ব্রিটনি প্রভাব উল্লেখ করা হয়েছে, তবে কীভাবে এটি পরাভূত করা যায় তা নিয়ে কথা বলা হয় না।

হিসাবে Nixuz তুলে ধরে এই একটি টু Z বা হিসাবে উল্লেখ করা হয় স্ট্যান্ডার্ড স্কোর


1
আমি সম্পাদনার আগে এটিকে উত্সাহিত করেছি, এবং ফিরে আসি এবং আমি আবার এটি উত্সাহিত করতে চেয়েছিলাম! দুর্দান্ত কাজ
মিমিডডল

ধন্যবাদ! আমি সিউডো কোড করব, তবে এখনই আমার কাছে সময় নেই। সম্ভবত পরে, বা সম্ভবত অন্য কেউ এই ধারণাগুলি গ্রহণ করবে এবং এটি প্রয়োগ করবে ...
অ্যাডাম ডেভিস

আপনাকে অনেক ধন্যবাদ, অ্যাডাম ডেভিস! নিক্সুজ যদি সত্যিই এটি বর্ণনা করে থাকে তবে আমার মনে হয় আমি পিএইচপি: পেস্ট.ব্রেডলিগিল.com / index.php ? paste_id=9206 এ একটি সমাধান পেয়েছি ? আপনি কি মনে করেন যে এই কোডটি সঠিক?
কাবি

এটি বেগের চেয়ে বিষয়টির ত্বরণ হওয়া উচিত নয়? শেষ উত্তরটি দেখুন
স্যাপ করুন

17

চাদ বার্চ এবং অ্যাডাম ডেভিস সঠিক যে আপনি একটি বেসলাইন স্থাপন করতে পিছনে তাকান হবে। কথিত হিসাবে আপনার প্রশ্নটি পরামর্শ দেয় যে আপনি কেবল গত 24 ঘন্টা থেকে ডেটা দেখতে চান, এবং এটি পুরোপুরি উড়ে যাবে না।

Historicalতিহাসিক ডেটার একটি বৃহত অংশের জন্য কোয়েরি না করে আপনার ডেটাটিকে কিছু মেমরি দেওয়ার একটি উপায় হ'ল ঘন ঘন চলমান গড় ব্যবহার এর সুবিধাটি হ'ল আপনি পিরিয়ড একবারে এটি আপডেট করতে পারেন এবং তারপরে সমস্ত পুরানো ডেটা ফ্লাশ করতে পারেন, সুতরাং আপনার কেবলমাত্র একটি একক মান মনে রাখা দরকার। সুতরাং যদি আপনার পিরিয়ড কোনও দিন হয় তবে আপনাকে প্রতিটি বিষয়ের জন্য একটি "দৈনিক গড়" বৈশিষ্ট্য বজায় রাখতে হবে, যা আপনি এটি করতে পারেন:

a_n = a_(n-1)*b + c_n*(1-b)

a_nদিনের হিসাবে চলমান গড় কোথায় n, বি 0 থেকে 1 এর মধ্যে কিছুটা ধ্রুবক (1 এর কাছাকাছি, মেমরির দীর্ঘতর) এবং c_nদিনটি হিট সংখ্যা n। সৌন্দর্যটি হল আপনি যদি দিনের শেষে এই আপডেটটি করেন তবে nআপনি ফ্লাশ করতে পারেন c_nএবং a_(n-1)

একটি সতর্কতা হ'ল এটি যে আপনি আপনার প্রাথমিক মানের জন্য যা বেছে নিন তা প্রাথমিকভাবে সংবেদনশীল হবে a

সম্পাদনা

এটা এই পদ্ধতির ঠাহর করতে সাহায্য করে, তাহলে নেওয়া n = 5, a_0 = 1এবং b = .9

আসুন ধরা যাক নতুন মানগুলি 5,0,0,1,4:

a_0 = 1
c_1 = 5 : a_1 = .9*1 + .1*5 = 1.4
c_2 = 0 : a_2 = .9*1.4 + .1*0 = 1.26
c_3 = 0 : a_3 = .9*1.26 + .1*0 = 1.134
c_4 = 1 : a_4 = .9*1.134 + .1*1 = 1.1206
c_5 = 4 : a_5 = .9*1.1206 + .1*5 = 1.40854

গড়ের মতো দেখতে খুব বেশি লাগে না? আমাদের পরবর্তী ইনপুটটি 5 হওয়া সত্ত্বেও মানটি কীভাবে 1 এর কাছাকাছি থাকবে তা নোট করুন? আপনি যদি গণিতকে প্রসারিত করেন তবে আপনি যা পাবেন:

a_n = (1-b)*c_n + (1-b)*b*c_(n-1) + (1-b)*b^2*c_(n-2) + ... + (leftover weight)*a_0

বাম ওজন বলতে কী বুঝি? ঠিক আছে, যে কোনও গড় হিসাবে, সমস্ত ওজন অবশ্যই 1 টি যোগ করা উচিত মূল ইনপুট এ।

আপনি যদি উপরের সূত্রটি অধ্যয়ন করেন তবে আপনার এই ব্যবহার সম্পর্কে কয়েকটি জিনিস উপলব্ধি করা উচিত:

  1. সমস্ত ডেটা চিরকালের জন্য গড়তে কোনও কিছুকে অবদান রাখে । ব্যবহারিকভাবে বলতে গেলে এমন একটি বিষয় রয়েছে যেখানে অবদানটি সত্যই, সত্যিই ছোট small
  2. সাম্প্রতিক মানগুলি পুরানো মানগুলির চেয়ে বেশি অবদান রাখে।
  3. উচ্চতর খ হ'ল, কম গুরুত্বপূর্ণ নতুন মান এবং লম্বা ওল্ড মানগুলি গুরুত্বপূর্ণ। যাইহোক, উচ্চতর খ হ'ল, আরও বেশি ডেটা আপনার a এর প্রাথমিক মানের নিচে নামাতে হবে।

আমি মনে করি প্রথম দুটি বৈশিষ্ট্য হ'ল আপনি যা খুঁজছেন তা হ'ল। আপনাকে সহজ ধারণা দেওয়ার জন্য এটি প্রয়োগ করা যেতে পারে, এখানে একটি অজগর বাস্তবায়ন (সকল ডাটাবেস ইন্টারঅ্যাকশন বিয়োগ):

>>> class EMA(object):
...  def __init__(self, base, decay):
...   self.val = base
...   self.decay = decay
...   print self.val
...  def update(self, value):
...   self.val = self.val*self.decay + (1-self.decay)*value
...   print self.val
... 
>>> a = EMA(1, .9)
1
>>> a.update(10)
1.9
>>> a.update(10)
2.71
>>> a.update(10)
3.439
>>> a.update(10)
4.0951
>>> a.update(10)
4.68559
>>> a.update(10)
5.217031
>>> a.update(10)
5.6953279
>>> a.update(10)
6.12579511
>>> a.update(10)
6.513215599
>>> a.update(10)
6.8618940391
>>> a.update(10)
7.17570463519

1
এটি অসীম প্রেরণা প্রতিক্রিয়া ফিল্টার (আইআইআর) হিসাবেও পরিচিত
অ্যাডাম ডেভিস

আরে আমার উত্তরের আরও ভাল সংস্করণ।
জোশুয়া

@ অ্যাডাম সত্যই? আমি তাদের সাথে পরিচিত নই। এটি কি কোনও আইআইআর-এর একটি বিশেষ ঘটনা? আমি যে নিবন্ধগুলিতে স্কিম দিচ্ছি সেগুলি এমন সূত্রগুলি সরবরাহ করে বলে মনে হচ্ছে না যা সাধারণ ক্ষেত্রে ঘনিষ্ঠভাবে চলমান গড়কে হ্রাস করে।
ডেভিড বার্গার

আপনাকে অনেক ধন্যবাদ ডেভিড বার্গার! এটি যদি কাজ করে তবে অন্যান্য উত্তরগুলিতে এটি একটি দুর্দান্ত সংযোজন হবে! যদিও আমার কিছু প্রশ্ন আছে। আমি আশা করি আপনি তাদের উত্তর দিতে পারেন: 1) বি ফ্যাক্টরটি কী সংজ্ঞা দেয় যে পুরানো ডেটা ওজন হ্রাস করছে কত দ্রুত? ২) পুরানো ডেটা সংরক্ষণ এবং গড় গণনার তুলনায় এই পদ্ধতিটি কি প্রায় সমমানের ফলাফল দেবে? 3) এটি কি আপনার সূত্রটি কথায় আছে? $ গড়_মূল্য = $ পুরাতন_ভেদী_মূল্য * $ স্মুথিং_ফ্যাক্টর + its হিট_টোডে * (1- $ স্মুথিং_ফ্যাক্টর)
কাওয়াই

1 এবং 3 পয়েন্ট সঠিক। ২.
ডেভিড বার্গার

8

সাধারণত "গুঞ্জন" কাঙ্ক্ষিত / লগ ক্ষয় প্রক্রিয়াটির কিছু ফর্ম ব্যবহার করে তৈরি করা হয়। হ্যাকার নিউজ, রেডডিট এবং অন্যান্যরা কীভাবে এটি সহজ পদ্ধতিতে পরিচালনা করে তার একটি সংক্ষিপ্তসার জন্য, এই পোস্টটি দেখুন

এটি সর্বদা জনপ্রিয় জিনিসগুলিকে পুরোপুরি সম্বোধন করে না। আপনি যা খুঁজছেন তা গুগলের " হট ট্রেন্ডস " বৈশিষ্ট্যের মতো কিছু বলে মনে হচ্ছে । তার জন্য, আপনি বর্তমান মানটিকে কোনও historicalতিহাসিক মান দ্বারা ভাগ করতে পারেন এবং তারপরে কিছু আওয়াজ প্রান্তিকের নীচে থাকা মানগুলি বিয়োগ করতে পারেন।


হ্যাঁ, গুগলের হট ট্রেন্ডস ঠিক আমি যা খুঁজছি। Historicalতিহাসিক মানটি কী হওয়া উচিত? উদাহরণস্বরূপ সর্বশেষ 7 দিনের গড় মূল্য?
কাওয়াই

1
এটি আপনার ডেটা কতটা অস্থির তা নির্ভর করে। আপনি 30 দিনের গড় দিয়ে শুরু করতে পারেন। যদি এটি কোনও চক্রীয় জিনিস হয় (যেমন কেনটাকি ডার্বি) তবে এটি বার্ষিক তুলনা করা বুদ্ধিমান হতে পারে। আমি পরীক্ষা করতাম এবং দেখতাম অনুশীলনে সবচেয়ে ভাল কী কাজ করে।
জেফ মোশার

7

আমি মনে করি তাদের যে কী শব্দটি আপনার লক্ষ্য করা উচিত তা হ'ল "অস্বাভাবিক"। কোনও বিষয় কখন "অস্বাভাবিক" হয় তা নির্ধারণ করার জন্য আপনাকে কী সাধারণ তা জানতে হবে। এটি হ'ল আপনার historicalতিহাসিক ডেটা প্রয়োজন যা আপনি নির্দিষ্ট কোয়েরির স্বাভাবিক হার খুঁজে পেতে গড় করতে পারেন। আপনি গড় গণনা থেকে অস্বাভাবিক দিনগুলি বাদ দিতে চাইতে পারেন, তবে আবার এর জন্য ইতিমধ্যে পর্যাপ্ত ডেটা থাকা দরকার, যাতে আপনি জানেন যে কোন দিনগুলি বাদ দেওয়া উচিত।

সেখান থেকে, আপনাকে একটি প্রান্তিক সেট স্থাপন করতে হবে (যার জন্য পরীক্ষার প্রয়োজন হবে, আমি নিশ্চিত) এবং যদি কিছু প্রান্তিকের বাইরে চলে যায় তবে স্বাভাবিকের চেয়ে 50% বেশি অনুসন্ধান বলুন, আপনি এটি "প্রবণতা" হিসাবে বিবেচনা করতে পারেন। অথবা, আপনি যদি উল্লেখ করেছেন যে "শীর্ষ এক্স ট্রেন্ডিয়েস্ট" সন্ধান করতে সক্ষম হতে চান তবে আপনাকে তাদের জিনিসগুলি থেকে কতটা দূরে (শতাংশ-ভিত্তিক) জিনিসগুলি অর্ডার করতে হবে।

উদাহরণস্বরূপ, ধরা যাক যে আপনার historicalতিহাসিক ডেটা আপনাকে জানিয়েছে যে ব্রিটনি স্পিয়ারস সাধারণত 100,000 অনুসন্ধান করে এবং প্যারিস হিলটন সাধারণত 50,000 পায়। যদি আপনার এমন কোনও দিন থাকে যেখানে তারা উভয়ই সাধারণের তুলনায় 10,000 টি বেশি অনুসন্ধান পান, আপনার প্যারিসকে ব্রিটনের চেয়ে "হট" মনে করা উচিত, কারণ তার অনুসন্ধানগুলি সাধারণের চেয়ে 20% বেশি বেড়েছে, আর ব্রিটনি কেবল 10% ছিল।

Godশ্বর, আমি বিশ্বাস করতে পারি না আমি কেবল ব্রিটনি স্পিয়ার্স এবং প্যারিস হিল্টনের "হটনেস" এর সাথে তুলনা করে একটি অনুচ্ছেদ লিখেছি। আপনি কি আমার কাজ আছে?


ধন্যবাদ, তবে কেবলমাত্র তাদের পূর্বসূরি বৃদ্ধির মাধ্যমে তাদের অর্ডার করা কিছুটা সহজ হবে, তাই না?
কাবা

7

আমি ভাবছিলাম যে এ জাতীয় ক্ষেত্রে নিয়মিত পদার্থবিজ্ঞানের ত্বরণের সূত্রটি ব্যবহার করা কি আদৌ সম্ভব?

v2-v1/t or dv/dt

আমরা ভি 1 কে প্রতি ঘন্টা প্রাথমিক পছন্দ / ভোট / গণনা-মতামত হিসাবে বিবেচনা করতে পারি এবং ভি 24 কে গত 24 ঘন্টার মধ্যে প্রতি ঘন্টা "বর্তমান" বেগ হিসাবে বিবেচনা করতে পারি?

এটি উত্তরের চেয়ে প্রশ্নের মতো, তবে মনে হয় এটি কেবল কার্যকর হতে পারে। সর্বোচ্চ ত্বরণ সহ যে কোনও বিষয়বস্তু ট্রেন্ডিংয়ের বিষয় হবে ...

আমি নিশ্চিত যে এটি ব্রিটনি স্পিয়ারস সমস্যার সমাধান করতে পারে না :-)


এটি কার্যকর হবে, কারণ এটি কেবল সময় হিসাবে ভোটের মতো / গণনার পরিমাণ গণনা করে এবং এটি আমাদের প্রয়োজন। এটি অংশে "ব্রিটনি স্পিয়ারস সমস্যা" সমাধান করতে পারে কারণ এই অনুসন্ধান শব্দটি সর্বদা উচ্চতর v1এবং v2"ট্রেন্ডিং" হিসাবে বিবেচনা করার জন্য খুব উচ্চ প্রয়োজন হবে। তবে এটি করার জন্য আরও ভাল এবং আরও পরিশীলিত সূত্র এবং অ্যালগরিদম রয়েছে। তবুও, এটি একটি প্রাথমিক কাজের উদাহরণ।
কাও

একটি প্রসঙ্গে যেখানে আপনার সর্বদা "ট্রেন্ডিং" ফিডে কিছু থাকা দরকার, এটি নিখুঁত। এক্সপ্লোরার ট্যাবের মতো কিছু যেখানে আপনি এখনই প্ল্যাটফর্মের মধ্যে সেরাটি তালিকাভুক্ত করেছেন। একটি ভিন্ন অ্যালগো ব্যবহার করে, আপনি খালি ফলাফল সেট করে শেষ করতে পারেন।
কিলিয়ান্ক

5

টপিক ফ্রিকোয়েন্সিটির সম্ভবত একটি সাধারণ গ্রেডিয়েন্ট কাজ করবে - বড় ধনাত্মক গ্রেডিয়েন্ট = জনপ্রিয়তায় দ্রুত বাড়ছে।

সবচেয়ে সহজ উপায় হ'ল প্রতিদিন অনুসন্ধান করা সংখ্যাকে বিন্ন করা, যাতে আপনার মতো কিছু থাকে

searches = [ 10, 7, 14, 8, 9, 12, 55, 104, 100 ]

এবং তারপরে এটি দিন দিন কতটা পরিবর্তিত হয়েছিল তা সন্ধান করুন:

hot_factor = [ b-a for a, b in zip(searches[:-1], searches[1:]) ]
# hot_factor is [ -3, 7, -6, 1, 3, 43, 49, -4 ]

এবং কেবল কিছু প্রকারের প্রান্তিক প্রয়োগ করুন যাতে যে দিনগুলিতে 50% বৃদ্ধি ছিল সেগুলি 'উত্তপ্ত' হিসাবে বিবেচনা করা হবে। আপনিও চাইলে এটিকে আরও জটিল করে তুলতে পারেন। পরম পার্থক্যের পরিবর্তে আপনি আপেক্ষিক পার্থক্য নিতে পারেন যাতে 100 থেকে 150 পর্যন্ত যাওয়া উত্তপ্ত বলে মনে করা হয়, তবে 1000 থেকে 1050 হয় না। বা আরও জটিল গ্রেডিয়েন্ট যা পরের দিনটিতে কেবল এক দিনের চেয়ে বেশি ট্রেন্ডগুলিকে বিবেচনা করে।


ধন্যবাদ. তবে গ্রেডিয়েন্ট কী এবং আমি কীভাবে এটি দিয়ে কাজ করতে পারি তা ঠিক জানি না। দুঃখিত!
কাও

ধন্যবাদ। তাই আমাকে দৈনিক ফ্রিকোয়েন্সি সম্বলিত একটি ভেক্টর তৈরি করতে হবে, তাই না? আপেক্ষিক মান ভাল হবে, আমি নিশ্চিত। উদাহরণ: আমি বলব যে 100 থেকে 110 পর্যন্ত বৃদ্ধি 1 থেকে 9 পর্যন্ত বৃদ্ধি হিসাবে ভাল নয়। তবে কি ভেক্টর ফাংশন নেই যা আমি উত্তপ্ত বিষয়গুলি সন্ধান করতে ব্যবহার করতে পারি? কেবলমাত্র আপেক্ষিক মানগুলি মূল্যায়ন করলেই তা ভাবা হবে না, তাই না? ১০০ থেকে ২০০ (১০০%) পর্যন্ত বৃদ্ধি ২০,০০০ থেকে ৩৯,০০০ থেকে বাড়ার মতো ভাল নয় !?
কাও

কোন ধরণের ওয়েব সাইটে আপনি এটি যুক্ত করছেন? @ অনুসন্ধানে দিনের পর দিন পরিবর্তনগুলি গণনা করার জন্য অটলপেক্টিকের পরামর্শটি কোনও জনপ্রিয় ফোরামের মতো কিছুতেই ভালভাবে মাপ দেবে না, যেখানে আপনার প্রতিদিন কয়েক হাজার নতুন বিষয় সংজ্ঞায়িত হচ্ছে topics
কোয়ান্টাম 7

আপনি ঠিক বলেছেন, বিপুল পরিমাণে ডেটা, প্রতি ঘন্টা কয়েক হাজার বিষয়ের জন্য আমার একটি অ্যালগরিদম দরকার।
কাবা 18

এটি একটি দুর্বল কৌশল। এইভাবে, ব্রিটনি স্পিয়ার্স সম্পর্কে মোট 50 টি অনুসন্ধানের বৃদ্ধি ইউরোপের নতুন গণভোট সম্পর্কে +50 অনুসন্ধানের মতো উত্তপ্ত।
ইমান আকবরী

4

আমি একটি প্রকল্পে কাজ করেছি, যেখানে আমার লক্ষ্য ছিল লাইভ টুইটার স্ট্রিম থেকে ট্রেন্ডিং বিষয়গুলি সন্ধান করা এবং ট্রেন্ডিং বিষয়গুলিতে সংবেদনশীল বিশ্লেষণও করা (ট্রেন্ডিং টপিক ইতিবাচক / নেতিবাচকভাবে কথা বলেছে কিনা তা সন্ধান করা)। টুইটার স্ট্রিম পরিচালনা করার জন্য আমি ঝড় ব্যবহার করেছি।

আমি আমার প্রতিবেদনটি একটি ব্লগ হিসাবে প্রকাশ করেছি: http://sayrohan.blogspot.com/2013/06/finding-trending-topics-and-trending.html

আমি র‌্যাঙ্কিংয়ের জন্য টোটাল কাউন্ট এবং জেড স্কোর ব্যবহার করেছি।

আমি যে পদ্ধতিটি ব্যবহার করেছি তা সামান্য জেনেরিক এবং আলোচনার অংশে আমি উল্লেখ করেছি যে আমরা কীভাবে নন-টুইটার অ্যাপ্লিকেশনটির জন্য সিস্টেমটি প্রসারিত করতে পারি।

আশা করি তথ্যগুলি সাহায্য করবে।


3

আপনি যদি নিজের বিষয়গুলি পাওয়ার জন্য কেবল টুইটগুলি বা স্থিতি বার্তাগুলি লক্ষ্য করেন তবে আপনি প্রচুর শব্দ করতে যাচ্ছেন। এমনকি যদি আপনি সমস্ত স্টপ শব্দগুলি সরিয়ে ফেলেন। বিষয় প্রার্থীদের আরও ভাল উপসেট পাওয়ার একটি উপায় হ'ল কোনও টুইট / বার্তাগুলি যা কোনও ইউআরএল ভাগ করে সেগুলিতে মনোনিবেশ করা এবং সেই ওয়েব পৃষ্ঠাগুলির শিরোনাম থেকে কীওয়ার্ডগুলি পাওয়া। এবং নিশ্চিত হয়ে নিন যে আপনি বিশেষ্য + বিশেষ্য বাক্যাংশগুলি পেতে পস ট্যাগিং প্রয়োগ করেছেন।

ওয়েব পৃষ্ঠাগুলির শিরোনামগুলি সাধারণত বর্ণনামূলক থাকে এবং এতে শব্দটি থাকে যা পৃষ্ঠাটি কী তা সম্পর্কে বর্ণনা করে। তদ্ব্যতীত, ওয়েব পৃষ্ঠাগুলি ভাগ করা সাধারণত ভাঙ্গা সংবাদের সাথে সম্পর্কযুক্ত (যেমন মাইকেল জ্যাকসনের মতো কোনও সেলিব্রিটি মারা গেলে, আপনি তাঁর মৃত্যু সম্পর্কে একটি নিবন্ধ ভাগ করে নেওয়ার জন্য অনেক লোককে পেতে যাচ্ছেন)।

আমি পরীক্ষাগুলি চালিয়েছি যেখানে আমি কেবল শিরোনামগুলি থেকে জনপ্রিয় কীওয়ার্ডগুলি নিয়েছি এবং তারপরে সমস্ত স্থিতি বার্তায় এই কীওয়ার্ডগুলির মোট গণনা পেয়েছি এবং সেগুলি অবশ্যই প্রচুর শব্দকে সরিয়ে দেয়। আপনি যদি এইভাবে এটি করেন তবে আপনার কোনও জটিল অ্যালগরিদ প্রয়োজন হবে না, কেবল কীওয়ার্ড ফ্রিকোয়েন্সিগুলির একটি সহজ ক্রম করুন এবং আপনি সেখানে অর্ধেক হয়ে গেছেন।


2

আপনি গত মাস বা বছরের সাথে বর্তমান তারিখের তুলনা করতে লগ-সম্ভাবনা-অনুপাত ব্যবহার করতে পারেন। এটি পরিসংখ্যানগত দিক দিয়ে দুর্দান্ত (আপনার ইভেন্টগুলি সাধারণত বিতরণ করা হয় নি, যা আপনার প্রশ্ন থেকে অনুমান করা উচিত)।

আপনার সমস্ত শর্তাবলী লগএলআর দ্বারা বাছাই করুন এবং শীর্ষ দশটি চয়ন করুন।

public static void main(String... args) {
    TermBag today = ...
    TermBag lastYear = ...
    for (String each: today.allTerms()) {
        System.out.println(logLikelihoodRatio(today, lastYear, each) + "\t" + each);
    }
} 

public static double logLikelihoodRatio(TermBag t1, TermBag t2, String term) {
    double k1 = t1.occurrences(term); 
    double k2 = t2.occurrences(term); 
    double n1 = t1.size(); 
    double n2 = t2.size(); 
    double p1 = k1 / n1;
    double p2 = k2 / n2;
    double p = (k1 + k2) / (n1 + n2);
    double logLR = 2*(logL(p1,k1,n1) + logL(p2,k2,n2) - logL(p,k1,n1) - logL(p,k2,n2));
    if (p1 < p2) logLR *= -1;
    return logLR;
}

private static double logL(double p, double k, double n) {
    return (k == 0 ? 0 : k * Math.log(p)) + ((n - k) == 0 ? 0 : (n - k) * Math.log(1 - p));
}

পিএস, একটি টার্মব্যাগ শব্দের একটি নিরবচ্ছিন্ন সংগ্রহ। প্রতিটি নথির জন্য আপনি শর্তগুলির একটি ব্যাগ তৈরি করেন। কেবল শব্দের উপস্থিতি গণনা করুন। তারপরে পদ্ধতিটি occurrencesপ্রদত্ত শব্দের সংখ্যার সংখ্যা প্রদান করে এবং পদ্ধতিটি sizeশব্দের মোট সংখ্যা প্রদান করে। শব্দগুলি কোনওরকমভাবে স্বাভাবিক toLowerCaseকরা ভাল , সাধারণত যথেষ্ট ভাল। অবশ্যই, উপরের উদাহরণগুলিতে আপনি আজকের সমস্ত প্রশ্নের সাথে একটি নথি তৈরি করবেন এবং একটি গত বছরের সমস্ত প্রশ্নের সাথে তৈরি করবেন।


দুঃখিত, আমি কোডটি বুঝতে পারি না। টার্মব্যাগ কি? এই কোডটি যা করে তা যদি আপনি খুব শীঘ্রই ব্যাখ্যা করতে পারেন তবে দুর্দান্ত হবে।
কাওয়াই

1
একটি টার্মব্যাগ শর্তাবলীর ব্যাগ, অর্থাত শ্রেণিতে পাঠ্যের মোট শব্দের সংখ্যা এবং প্রতিটি শব্দের উপস্থিতির সংখ্যার উত্তর দিতে সক্ষম হওয়া উচিত।
akuhn

0

ধারণাটি হ'ল এই জাতীয় জিনিসগুলি লক্ষ্য রাখা এবং তাদের নিজস্ব বেসলাইনের তুলনায় তারা যখন উল্লেখযোগ্যভাবে লাফিয়ে যায় সেদিকে লক্ষ্য রাখে।

সুতরাং, নির্দিষ্ট থ্রেশহোল্ডের চেয়েও বেশি কোয়েরিগুলির জন্য, প্রত্যেককে ট্র্যাক করুন এবং যখন এটির historicalতিহাসিক মানটির কোনও মান (প্রায় দ্বিগুণ বলে) পরিবর্তন হয়, তবে এটি একটি নতুন গরম প্রবণতা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.