paint-brush
Հանդիպեք այն բոտին, որը կարդում է բոլոր վատ լուրերի վերնագրերը, որպեսզի դուք ստիպված չլինեք դա անելկողմից@raymondcamden
Նոր պատմություն

Հանդիպեք այն բոտին, որը կարդում է բոլոր վատ լուրերի վերնագրերը, որպեսզի դուք ստիպված չլինեք դա անել

կողմից Raymond Camden6m2025/03/23
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Diffbot's Knowledge Graph-ն ունի պարզ նպատակ՝ ձեր մատների ծայրին հասցնել բոլոր գիտելիքների հանրագումարը որոնման միջոցով, որն ընդգծում է տվյալներն ու հարաբերությունները:
featured image - Հանդիպեք այն բոտին, որը կարդում է բոլոր վատ լուրերի վերնագրերը, որպեսզի դուք ստիպված չլինեք դա անել
Raymond Camden HackerNoon profile picture

Diffbot's Knowledge Graph-ն ունի պարզ նպատակ՝ ձեր մատների ծայրին հասցնել բոլոր գիտելիքների հանրագումարը որոնման միջոցով, որն ընդգծում է տվյալներն ու հարաբերությունները պարզ տեքստի վրա հիմնված որոնման համակարգի փորձի վրա: Ողջ համացանցից ստացված Գիտելիքի գրաֆիկը թույլ է տալիս կատարել բարդ հարցումներ միլիարդավոր տվյալների կետերի դեմ անմիջապես պարզ API-ի միջոցով: Ես որոշեցի պտտվել իրենց API-ով և ստեղծել «համեմատաբար» պարզ գործիք՝ նորությունների վերլուծություն ավտոմատ հարթակում աշխատող արտադրանքի համար: Պետք է հեշտ լինի, չէ՞: Եկեք հասնենք դրան: Նկատի ունեցեք, որ այս բլոգի գրառման օրինակները ենթադրում են, որ դուք ստացել եք անվճար բանալի Diffbot-ից: Համոզվեք, որ դա արեք նախքան նմուշները փորձելը:

Հարցման ձևավորում

Նախքան կոդ գրելը, ես մուտք գործեցի Diffbot և բացեցի նրանց տեսողական որոնման գործիքը Գիտելիքի գրաֆիկի համար: Գործիքը թույլ է տալիս հարցումներ ստեղծել տեսողականորեն կամ ձեռքով: Հարցումները հայտնի են որպես «DQL» հայտարարություններ Diffbot-ում և բավականին պարզ են կարդալու համար, նույնիսկ եթե նախկինում երբեք չեք տեսել շարահյուսությունը:


Վիզուալ հարցումների ստեղծողի էկրանի պատկերը, ընտրված տարբերակներ չկան


Այս գործիքից ես սկսեցի ընտրելով կազմակերպության տեսակը: Սա այն տվյալների բարձր մակարդակի տեսակն է, որը ես ուզում եմ որոնել և կարող է լինել բազմաթիվ տարբերակներից մեկը՝ մարդկանցից մինչև իրադարձություններ, ֆիլմեր և ներդրումներ: Ես ընտրեցի «Հոդվածը», քանի որ իմ նպատակն է գտնել նորություններ, որոնք վատ են խոսում իմ հրաշալի արտադրանքի մասին: Այնուհետև ես ընտրեցի «Զտել ըստ» տարբերակը: Թեև դուք կարող եք զտել ըստ էության տեսակի ցանկացած հատկության, ես օգտագործել եմ tags.label , քանի որ այն ավելի ճշգրիտ համընկնում է, քան պարզ տեքստային որոնումը: Թեև տեքստային ֆիլտրն աշխատում է, tags.label օգտագործումը շատ ավելի լավ արդյունք է տալիս՝ ապահովելով, որ արդյունքները կենտրոնացած են իմ որոնման վրա, այլ ոչ թե պատահաբար նշելով այն: Իմ ցուցադրության համար ես կփնտրեմ հոդվածներ «XBox»-ի մասին:


Ես նաև օգտագործել եմ «Տեսակավորել ըստ» արժեքը՝ սկզբում նորագույնը ցուցադրելու համար և այս որոնումը տեսնելու համար՝ արդյոք իմ արդյունքներն իմաստ ունեն:


Ցուցադրված են որոնման արդյունքները


Թեև իմ սկզբնական արդյունքները չեն ներառել որևէ օտարալեզու արդյունք, ես գիտեի, որ կցանկանայի զտել արդյունքները անգլերենով, ուստի հաջորդաբար ավելացրի լեզվի զտիչ: Սեղմելով + նշանը ընթացիկ ֆիլտրով, ես կարողացա ավելացնել լեզուն և en անգլերենի համար: Կրկին սեղմեցի որոնումը.


Որոնման արդյունքները ցուցադրված են, այժմ զտված են անգլերենով


Լավ, այնպես որ, հաջորդը, ես ուզում եմ զտել միայն բացասական արդյունքների: Գիտելիքի գծապատկեր Հոդվածների սուբյեկտներն ունեն տրամադրությունների գնահատական (դուք կարող եք տեսնել դրանք որոնման արդյունքներում), որը գնում է -1-ից մինչև ամենաբացասականը մինչև 1-ը մինչև ամենադրականը: Սկզբում ես պարզապես ընտրում էի 0-ից փոքր կամ հավասար տրամադրություններ ունեցող տարրեր:


Ցուցադրված են որոնման արդյունքները, որոնք այժմ զտված են անգլերեն՝ բացասական տրամադրությամբ


Woot, հասնել այնտեղ: Որպես վերջին քայլ՝ ես գիտեի, որ սա ավտոմատացվելու է և զտվելու է «վերջին» տարրերի մեջ, ուստի ավելացրի ևս մեկ զտիչ, այս անգամ 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 handler»-ում, որը 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-ն աջակցում է «էլփոստ ուղարկել հաշվի սեփականատիրոջը» քայլին, որը կկատարի հենց դա, էլ. Եթե ես սա կառուցեի հաճախորդի համար, ես կօգտագործեի փոստի API-ների համար ներկառուցված Pipedream-ի բազմաթիվ քայլերից մեկը:


Գործարկվելուց հետո ես ստանում եմ գեղեցիկ էլ.


Էլփոստի նմուշ


Եթե որոշեք միացնել Pipedream-ին, կարող եք գտնել իմ աշխատանքային հոսքը այստեղ՝ https://github.com/cfjedimaster/General-Pipedream-AI-Stuff/tree/production/report-on-sentiment-p_gYCeNbG

Ի՞նչ է հաջորդը:

Սա Diffbot's Knowledge Graph API-ի օգտագործման ընդամենը մեկ օրինակ է, և որպես հիշեցում, հոդվածները միայն այն բազմաթիվ տարբեր տեսակի տվյալներից են, որոնք կարող եք որոնել: Այն ամենը, ինչ ես արել եմ այստեղ, նույնպես արվել է ամբողջովին անվճար հաշվի վրա, այնպես որ դուք կարող եք բացարձակապես գրանցվել և փորձել ինքներդ: Ես պատրաստվում եմ ավելի մանրամասն ուսումնասիրել այս հարցը, այնպես որ, եթե հարցեր ունեք, տեղեկացրեք ինձ: