Графикаи дониши Diffbot як ҳадафи оддӣ дорад - маҷмӯи тамоми донишҳоро тавассути ҷустуҷӯ, ки маълумот ва муносибатҳоро бар таҷрибаи оддии муҳаррики ҷустуҷӯии матн ба матн таъкид мекунад, ба дасти худ расонед. Knowledge Graph аз тамоми веб сарчашма мегирад, ба шумо имкон медиҳад, ки дархостҳои мураккабро дар муқобили миллиардҳо нуқтаи додаҳо фавран тавассути API оддӣ иҷро кунед. Ман тасмим гирифтам, ки бо API-и худ чарх занам ва як асбоби "нисбатан" содда созам - таҳлили ахбор барои маҳсулоте, ки дар платформаи автоматӣ кор мекунад. Бояд осон бошад, дуруст? Биёед ба он бирасем. Дар хотир доред, ки мисолҳои ин пости блог тахмин мекунанд, ки шумо калиди ройгонро аз Diffbot гирифтаед. Боварӣ ҳосил кунед, ки пеш аз озмоиши намунаҳо ин корро кунед.
Пеш аз навиштани сатри код, ман ба Diffbot ворид шудам ва асбоби ҷустуҷӯии визуалии онҳоро барои Графикаи дониш кушодам. Восита ба шумо имкон медиҳад, ки дархостҳоро ба таври визуалӣ ё дастӣ созед. Дар Diffbot дархостҳо ҳамчун изҳороти 'DQL' маълуманд ва хондан хеле осон аст, ҳатто агар шумо қаблан синтаксисро надида бошед.
Аз ин асбоб, ман бо интихоби навъи объект оғоз кардам. Ин навъи сатҳи баланди маълумотест, ки ман мехоҳам ҷустуҷӯ кунам ва метавонад яке аз имконоти сершумор бошад, аз одамон то рӯйдодҳо то филмҳо ва сармоягузорӣ. Ман "Мақоларо" интихоб кардам, зеро ҳадафи ман пайдо кардани хабарест, ки дар бораи маҳсулоти аҷиби ман бадгӯӣ мекунад. Пас аз он ман варианти "Филтр аз рӯи" -ро интихоб кардам. Дар ҳоле, ки шумо метавонед аз рӯи ҳама гуна моликият дар намуди объект филтр кунед, ман tags.label
истифода кардам, зеро он нисбат ба ҷустуҷӯи матни оддӣ мувофиқтар аст. Дар ҳоле, ки филтри матн кор мекунад, истифодаи tags.label
натиҷаи хеле беҳтар медиҳад, то боварӣ ҳосил кунед, ки натиҷаҳо ба ҷустуҷӯи ман нигаронида шудаанд, на танҳо ба таври тасодуфӣ онро зикр мекунанд. Барои намоиши ман, ман мақолаҳо дар бораи "XBox" меҷӯям.
Ман инчунин арзиши "Мураттаб кардан" -ро истифода бурдам, то аввал навтаринро нишон диҳам ва ин ҷустуҷӯи хит барои бубинам, ки оё натиҷаҳои ман маъно доранд.
Дар ҳоле ки натиҷаҳои аввалини ман ягон натиҷаи забони хориҷиро дар бар намегиранд, ман медонистам, ки ман мехоҳам натиҷаҳоро бо забони англисӣ филтр кунам, аз ин рӯ ман баъдан барои забон филтр илова кардам. Бо филтри ҷорӣ аломати +-ро пахш карда, ман тавонистам барои забони англисӣ забон ва en
илова кунам. Бори дигар, ман ҷустуҷӯро пахш кардам:
Хуб, пас ман мехоҳам ба натиҷаҳои манфӣ филтр кунам. Объектҳои Мақолаи Графикаи Дониш дорои холҳои эҳсосотӣ мебошанд (шумо онҳоро дар натиҷаҳои ҷустуҷӯ мебинед), ки аз -1 то аз ҳама манфӣ то 1 то мусбаттарин мебошанд. Дар аввал, ман танҳо ашёеро интихоб кардам, ки ҳиссиёташон аз 0 камтар ё баробар аст.
Вот, расидан ба он ҷо. Ҳамчун қадами ниҳоӣ, ман медонистам, ки ин автоматӣ карда мешавад ва ба ҷузъҳои "охирин" филтр карда мешавад, аз ин рӯ ман як филтри дигар илова кардам, ин дафъа дар date
, after
интихобшуда ва санаро аз як ҳафта пеш интихоб кардам.
Дар ин лаҳза, дархост хуб ба назар мерасад, аз ин рӯ биёед арзиши дархостро, ки асбоб пешниҳод кардааст, нусхабардорӣ кунем:
type:Article tags.label:"Xbox" language:"en" sentiment<=0 date>"2025-03-03" sortBy:date
Тарҳрезии пурсиш воқеан қисми душвор буд. Барои код, ман ба ҳуҷҷатҳои ҷустуҷӯ рафтам. Мисолҳо дар асоси curl/HTTP мебошанд, аммо ба Python ё ягон забони дигар интиқол додан хеле осон аст. Ин намунаро баррасӣ кунед:
import os import requests import json import urllib.parse token = os.environ.get("db_token") query = 'type:Article tags.label:"Xbox" language:"en" sentiment<=0 date>"2025-03-03" sortBy:date' apiCall = f"https://kg.diffbot.com/kg/v3/dql?type=query&token={token}&query={urllib.parse.quote(query)}&size=25" req = requests.get(apiCall) results = json.loads(req.content) print(f"Total results, {results['hits']}") for result in results["data"]: print(result["entity"]["title"]) print(result["entity"]["date"]["str"]) print(result["entity"]["summary"]) if "author" in result["entity"]: print(result["entity"]["author"]) print(result["entity"]["siteName"]) print(result["entity"]["pageUrl"]) print(result["entity"]["sentiment"]) print("------------------------------------")
Инро тақсим кардан - ман бо дархости худ аз асбоби визуалӣ оғоз кардам. Он гоҳ url рамзгузорӣ мешавад ва ба API барои Графикаи дониш интиқол дода мешавад. Ягона ҷузъи нави воқеии он илова кардани size=25
мебошад, то натиҷаро ба ҳадди оқилона нигоҳ дорад.
Ман API-ро даъват мекунам, натиҷаҳои умумии дарёфтшударо чоп мекунам (аз натиҷаи hits
) ва сипас такрор мекунам, ки ҳар як маълумоти гуногунро аз натиҷа нишон медиҳад. Инҳоянд чанде аз натиҷаҳо:
Total results, 68 Xbox will release its first handheld gaming console this year, report claims d2025-03-10T19:37 Windows Central expects the console to take advantage of the widgets on the Xbox Game Bar to let use... Jacob Siegal BGR https://bgr.com/entertainment/xbox-will-release-its-first-handheld-gaming-console-this-year-report-claims/ 0 ------------------------------------ Rumour: Next-Gen Xbox a 'PC in Essence' - What Would That Mean for PlayStation? d2025-03-10T19:00 Recent comments from Windows Central's executive editor Jez Corden have sparked discussion about whe... Stephen Tailby Push Square https://www.pushsquare.com/news/2025/03/rumour-next-gen-xbox-a-pc-in-essence-what-would-that-mean-for-playstation 0 ------------------------------------ Xbox handheld out this year and will go up against Nintendo Switch 2 says source d2025-03-10T18:50 New rumours about Microsoft's next gen plans suggests that there will be two Xbox handheld consoles ... GameCentral Metro http://metro.co.uk/2025/03/10/xbox-handheld-this-year-will-go-nintendo-switch-2-says-source-22703266/ 0
Ин кор мекунад, аммо ҳоло биёед санаро динамикӣ кунем. Ман воридотро аз datetime
оғоз кардам:
from datetime import datetime, timedelta
Пас аз он ман санаи форматшударо барои ҳафтаи гузашта тавлид кардам:
today = datetime.now() lastWeek = today + timedelta(days=-7) fLastWeek = lastWeek.strftime("%Y-%m-%d")
Ва охирин каме ин буд, ки ин санаро ба дархости ман дохил кунам:
query = f'type:Article tags.label:"Xbox" language:"en" sentiment<=0 date>{fLastWeek} sortBy:date'
Шумо метавонед рамзи пурраи версияи ибтидоиро дар ин ҷо ва версияи ниҳоиро дар инҷо бубинед.
Хуб, вақти автоматикунонии ин. Барои автоматизатсияи худ, ман аз Pipedream истифода хоҳам кард, ки системаи бениҳоят чандири ҷараёни кориро, ки ман дар гузашта борҳо истифода карда будам. Дар ин ҷо тамоми ҷараёни кор бо ҳар як қисм сохта шудааст:
Ман ҷараёни кори худро бо триггери оддӣ дар асоси ҷадвал оғоз кардам, яъне кай бояд иҷро шавад. Ин то ҳадде худсарона буд, аммо ман ҳар ҳафта, рӯзи якшанбе, соати 13:00 интихоб мекардам.
Қадами навбатӣ, getArticles
, мантиқи ман пештар нишон додам, кор мекунад, аммо ҳоло дар "мантиқан Pipedream", ки роҳи стандартии навиштани қадамҳои код дар ҷараёни кории Pipedream мебошад.
import os import requests import json from datetime import datetime, timedelta import urllib.parse def handler(pd: "pipedream"): token = os.environ.get("db_token") today = datetime.now() lastWeek = today + timedelta(days=-7) fLastWeek = lastWeek.strftime("%Y-%m-%d") query = f'type:Article tags.label:"Xbox" language:"en" sentiment<=0 date>{fLastWeek} sortBy:date' apiCall = f"https://kg.diffbot.com/kg/v3/dql?type=query&token={token}&query={urllib.parse.quote(query)}&size=25" req = requests.get(apiCall) return json.loads(req.content)
Қадами навбатӣ танҳо як қадами коди зуд барои хотима додан ба ҷараёни кор аст, агар ягон натиҷа пайдо нашавад:
def handler(pd: "pipedream"): if len(pd.steps["getArticles"]["$return_value"]["data"]) == 0: pd.flow.exit("No results")
Ҳоло ман мехоҳам, ки натиҷаҳоро каме 'массаж' кунам. Ман дар ниҳоят инро ба худам почтаи электронӣ мефиристам, бинобар ин ман як қадам барои формат кардани натиҷаҳо дар сатри хуб сохтам:
from datetime import datetime def handler(pd: "pipedream"): email = f""" Negative Article Results: Our search found {pd.steps["getArticles"]["$return_value"]["hits"]} results. Here are the top 25: """ for result in pd.steps["getArticles"]["$return_value"]["data"]: date = datetime.fromtimestamp(result["entity"]["date"]["timestamp"] / 1000) date_f = date.strftime("%Y-%m-%d") email += f""" {result["entity"]["title"]} Sentiment: {result["entity"]["sentiment"]} Published: {date_f} Link: {result["entity"]["pageUrl"]} """ return email
Боз ҳам, ин дар робита ба он чизе ки ман барои дохил кардан кофӣ муҳим мепиндоштам, то ҳадде худсарона аст. Шумо бешубҳа метавонистед бештар ғамхортар шавед ва ҳатто корҳоеро иҷро кунед, ба монанди "дар эҳсоси воқеан бад, ранг, парчамҳои сурх ва ғайра илова кунед".
Қадами ниҳоӣ ин буд, ки танҳо ба худам паёми электронӣ фиристам. Pipedream қадами "фиристодани почтаи электронӣ ба соҳиби ҳисоб" -ро дастгирӣ мекунад, ки маҳз ҳамин корро мекунад, ба ман почтаи электронӣ фиристед. Агар ман инро барои муштарӣ месохтам, ман яке аз қадамҳои сершумори Pipedream-ро барои API-ҳои почта истифода мебурдам.
Пас аз кор кардан, ман паёми хуби почтаи электронӣ бо рӯйхати мақолаҳо ва эҳсосоти онҳо мегирам:
Агар шумо интихоб кунед, ки Pipedream-ро чарх занед, шумо метавонед ҷараёни кори маро дар ин ҷо пайдо кунед: https://github.com/cfjedimaster/General-Pipedream-AI-Stuff/tree/production/report-on-sentiment-p_gYCeNbG
Ин танҳо як мисоли истифодаи Diffbot's Knowledge Graph API аст ва ҳамчун ёдоварӣ, мақолаҳо танҳо яке аз намудҳои гуногуни маълумоте мебошанд, ки шумо метавонед ҷустуҷӯ кунед. Ҳар чизе ки ман дар ин ҷо кардам, инчунин дар ҳисоби комилан ройгон анҷом дода шуд, бинобар ин шумо комилан метавонед сабти ном кунед ва онро худатон санҷед. Ман инро бештар кофтам, бинобар ин, агар шумо ягон савол дошта бошед, ба ман хабар диҳед!