पाठ 13 / 25
Mention Rate और Share of Voice
निकालें कि आप कितनी बार दिखते हैं और प्रतिस्पर्धियों से कैसे तुलना होती है, ईमानदार अनिश्चितता के साथ।
दर, हिस्सा और सीमा
हर prompt को कई बार, उन assistants पर चलाएँ जो आपके ग्राहक उपयोग करते हैं, और उत्तर दर्ज करें। Mention rate = आपके brand का नाम लेने वाले उत्तर ÷ कुल उत्तर। Share of voice = आपके mentions ÷ श्रेणी में सभी brand mentions। चूँकि outputs अनिश्चित हैं, सिर्फ़ एक संख्या नहीं, सीमा (confidence interval) बताएँ: 10 उत्तरों में 5 mentions 50% है, पर संभावित सीमा लगभग 24% से 76% है। ज़्यादा runs सीमा को संकरा करते हैं। हमेशा लिखें कि कौन-सा assistant था, web search चालू था या नहीं, तारीख़ और स्थान या भाषा।
Wilson interval के साथ mention rate, चलाकर
मैंने यह एक ही सवाल के दस गढ़े उत्तरों पर चलाया। Acme Tasks 10 में से 5 में (50%) आता है, 95% सीमा 0.24 से 0.76। इस डेटा को प्रदर्शन के लिए गढ़ा हुआ मानें।
import re, math
answers = [
"For project tracking, consider Asana, Trello or Acme Tasks.",
"Top picks: Jira, Trello, and ClickUp.",
"Acme Tasks is a lightweight option; also see Todoist.",
"Many teams use Notion or Asana.",
"Try Acme Tasks if you want simple boards.",
"Jira and Monday.com lead for enterprises.",
"Trello and Acme Tasks are good for small teams.",
"Asana, ClickUp and Basecamp are popular.",
"Acme Tasks or Todoist suit individuals.",
"Consider Linear, Jira or Asana.",
]
brand = re.compile(r"\bAcme Tasks\b", re.I)
k = sum(bool(brand.search(a)) for a in answers); n = len(answers)
def wilson(k, n, z=1.96):
p = k / n; d = 1 + z * z / n
c = (p + z * z / (2 * n)) / d
h = z * math.sqrt(p * (1 - p) / n + z * z / (4 * n * n)) / d
return round(c - h, 2), round(c + h, 2)
print(k, n, k / n, wilson(k, n))
Output:
5 10 0.5 (0.24, 0.76)
Share of voice और उल्लेख का क्रम, चलाकर
उन्हीं दस उत्तरों से: Acme Tasks के 20 brand mentions में से 5 हैं (share of voice 0.25), Asana के 4 (0.2)। पहले उत्तर में उल्लेख का क्रम Asana, Trello, Acme Tasks है। क्रम मायने रख सकता है क्योंकि users ऊपर की चीज़ें पहले पढ़ते हैं।
import re
brands = ["Acme Tasks", "Asana", "Trello", "Jira", "ClickUp", "Todoist", "Notion"]
cnt = {b: sum(bool(re.search(r"\b" + re.escape(b) + r"\b", a, re.I)) for a in answers)
for b in brands}
total = sum(cnt.values())
print(cnt, {b: round(cnt[b] / total, 2) for b in ("Acme Tasks", "Asana")})
def order(answer, names):
pos = [(m.start(), n) for n in names
if (m := re.search(r"\b" + re.escape(n) + r"\b", answer, re.I))]
return [n for _, n in sorted(pos)]
print(order(answers[0], brands))
Output:
{'Acme Tasks': 5, 'Asana': 4, 'Trello': 3, 'Jira': 3, 'ClickUp': 2, 'Todoist': 2, 'Notion': 1} {'Acme Tasks': 0.25, 'Asana': 0.2}
['Asana', 'Trello', 'Acme Tasks']त्वरित जाँच: सिर्फ़ एक mention-rate संख्या की जगह सीमा क्यों बताएँ?
- सीमाएँ ज़्यादा जटिल दिखती हैं
- उत्तर हर बार बदलते हैं, इसलिए एक संख्या भ्रमित कर सकती है
- Assistants हमेशा एक-जैसे उत्तर देते हैं
- अकेली संख्याएँ अवैध हैं
Answer
उत्तर हर बार बदलते हैं, इसलिए एक संख्या भ्रमित कर सकती है — नमूना-शोर का मतलब है कि छोटे नमूने चौड़ी संभावित सीमाएँ देते हैं जिन्हें दिखाना चाहिए।