526 ການອ່ານ
526 ການອ່ານ

ພົບກັບ Bot ທີ່ອ່ານທຸກຫົວຂໍ້ຂ່າວບໍ່ດີດັ່ງນັ້ນທ່ານບໍ່ຈໍາເປັນຕ້ອງ

ໂດຍ Raymond Camden6m2025/03/23
Read on Terminal Reader

ຍາວເກີນໄປ; ອ່ານ

Knowledge Graph ຂອງ Diffbot ມີຈຸດປະສົງງ່າຍໆ - ເອົາຍອດລວມຂອງຄວາມຮູ້ທັງຫມົດໄປສູ່ປາຍນິ້ວມືຂອງທ່ານໂດຍຜ່ານການຄົ້ນຫາທີ່ເນັ້ນຫນັກໃສ່ຂໍ້ມູນແລະການພົວພັນ.
featured image - ພົບກັບ Bot ທີ່ອ່ານທຸກຫົວຂໍ້ຂ່າວບໍ່ດີດັ່ງນັ້ນທ່ານບໍ່ຈໍາເປັນຕ້ອງ
Raymond Camden HackerNoon profile picture

Knowledge Graph ຂອງ Diffbot ມີຈຸດປະສົງທີ່ງ່າຍດາຍ - ເອົາຍອດລວມຂອງຄວາມຮູ້ທັງຫມົດໄປສູ່ປາຍນິ້ວມືຂອງທ່ານໂດຍຜ່ານການຄົ້ນຫາທີ່ເນັ້ນໃສ່ຂໍ້ມູນແລະການພົວພັນຫຼາຍກວ່າປະສົບການຂອງເຄື່ອງຈັກຊອກຫາແບບງ່າຍໆ. ມາຈາກເວັບທັງໝົດ, Knowledge Graph ເຮັດໃຫ້ທ່ານເຮັດການສອບຖາມທີ່ຊັບຊ້ອນຕໍ່ກັບຫຼາຍຕື້ຈຸດຂໍ້ມູນທັນທີຜ່ານ API ງ່າຍໆ. ຂ້ອຍໄດ້ຕັດສິນໃຈເອົາການຫມຸນກັບ API ຂອງພວກເຂົາແລະສ້າງເຄື່ອງມືທີ່ງ່າຍດາຍ "ຂ້ອນຂ້າງ" - ການວິເຄາະຂ່າວສໍາລັບຜະລິດຕະພັນທີ່ດໍາເນີນການຢູ່ໃນເວທີອັດຕະໂນມັດ. ຄວນຈະງ່າຍ, ບໍ່ແມ່ນບໍ? ໃຫ້ໄປເຖິງມັນ. ໃຫ້ສັງເກດວ່າຕົວຢ່າງໃນບົດຄວາມ blog ນີ້ສົມມຸດວ່າທ່ານໄດ້ຮັບ ລະຫັດຟຣີ ຈາກ Diffbot. ໃຫ້ແນ່ໃຈວ່າເຮັດແນວນັ້ນກ່ອນທີ່ຈະພະຍາຍາມຕົວຢ່າງ.

ການອອກແບບແບບສອບຖາມ

ກ່ອນທີ່ຈະຂຽນລະຫັດ, ຂ້າພະເຈົ້າໄດ້ເຂົ້າສູ່ລະບົບ Diffbot ແລະເປີດເຄື່ອງມືຄົ້ນຫາແບບສາຍຕາຂອງພວກເຂົາສໍາລັບ Knowledge Graph. ເຄື່ອງມືຊ່ວຍໃຫ້ທ່ານສ້າງແບບສອບຖາມດ້ວຍສາຍຕາຫຼືດ້ວຍມື. ການສອບຖາມແມ່ນເປັນທີ່ຮູ້ຈັກເປັນຄໍາຖະແຫຼງ 'DQL' ໃນ Diffbot ແລະແມ່ນງ່າຍດາຍຫຼາຍທີ່ຈະອ່ານເຖິງແມ່ນວ່າທ່ານບໍ່ເຄີຍເຫັນ syntax ມາກ່ອນ.


ຮູບໜ້າຈໍຂອງຕົວສ້າງແບບສອບຖາມທາງສາຍຕາ, ບໍ່ໄດ້ເລືອກທາງເລືອກ


ຈາກເຄື່ອງມືນີ້, ຂ້າພະເຈົ້າໄດ້ເລີ່ມຕົ້ນໂດຍການເລືອກປະເພດນິຕິບຸກຄົນ. ນີ້ແມ່ນປະເພດຂໍ້ມູນລະດັບສູງທີ່ຂ້ອຍຕ້ອງການຄົ້ນຫາແລະສາມາດເປັນຫນຶ່ງໃນທາງເລືອກຈໍານວນຫລາຍ, ຈາກຄົນໄປຫາເຫດການໄປຫາຮູບເງົາແລະການລົງທຶນ. ຂ້ອຍເລືອກ "ບົດຄວາມ" ເປັນຄວາມຕັ້ງໃຈຂອງຂ້ອຍເພື່ອຊອກຫາຂ່າວທີ່ເວົ້າບໍ່ດີກ່ຽວກັບຜະລິດຕະພັນທີ່ຍອດຢ້ຽມຂອງຂ້ອຍ. ຫຼັງຈາກນັ້ນ, ຂ້າພະເຈົ້າໄດ້ເລືອກ "ການກັ່ນຕອງໂດຍ" ທາງເລືອກ. ໃນຂະນະທີ່ທ່ານສາມາດກັ່ນຕອງໂດຍຊັບສິນໃດໆໃນປະເພດນິຕິບຸກຄົນ, ຂ້າພະເຈົ້າໄດ້ໃຊ້ tags.label ຍ້ອນວ່າມັນເປັນການຈັບຄູ່ທີ່ຊັດເຈນກວ່າການຄົ້ນຫາຂໍ້ຄວາມທີ່ງ່າຍດາຍ. ໃນຂະນະທີ່ຕົວກອງຂໍ້ຄວາມເຮັດວຽກ, ການໃຊ້ tags.label ໃຫ້ຜົນໄດ້ຮັບທີ່ດີກວ່າໂດຍການຮັບປະກັນວ່າຜົນໄດ້ຮັບແມ່ນສຸມໃສ່ການຊອກຫາຂອງຂ້ອຍ, ບໍ່ພຽງແຕ່ກ່າວເຖິງມັນແບບທໍາມະດາ. ສໍາລັບການສາທິດຂອງຂ້ອຍ, ຂ້ອຍຈະຊອກຫາບົດຄວາມກ່ຽວກັບ "XBox".


ຂ້ອຍຍັງໄດ້ໃຊ້ຄ່າ "ຈັດລຽງຕາມ" ເພື່ອສະແດງອັນໃຫມ່ທີ່ສຸດຄັ້ງທໍາອິດແລະການຄົ້ນຫາທີ່ຕີນີ້ເພື່ອເບິ່ງວ່າຜົນໄດ້ຮັບຂອງຂ້ອຍມີຄວາມຫມາຍບໍ.


ຜົນການຄົ້ນຫາສະແດງໃຫ້ເຫັນ


ໃນຂະນະທີ່ຜົນໄດ້ຮັບເບື້ອງຕົ້ນຂອງຂ້ອຍບໍ່ໄດ້ລວມເອົາຜົນໄດ້ຮັບຈາກພາສາຕ່າງປະເທດ, ຂ້ອຍຮູ້ວ່າຂ້ອຍຕ້ອງການກັ່ນຕອງຜົນໄດ້ຮັບເປັນພາສາອັງກິດ, ດັ່ງນັ້ນຂ້ອຍຈຶ່ງເພີ່ມຕົວກອງສໍາລັບພາສາຕໍ່ໄປ. ການກົດແປ້ນພິມ + ໂດຍການກັ່ນຕອງປະຈຸບັນ, ຂ້ອຍສາມາດເພີ່ມພາສາແລະ en ສໍາລັບພາສາອັງກິດ. ອີກເທື່ອ ໜຶ່ງ, ຂ້ອຍຕີການຄົ້ນຫາ:


ຜົນການຊອກຫາຖືກສະແດງ, ຕອນນີ້ຖືກກັ່ນຕອງເປັນພາສາອັງກິດແລ້ວ


ຕົກລົງ, ສະນັ້ນຕໍ່ໄປ, ຂ້ອຍຕ້ອງການການກັ່ນຕອງພຽງແຕ່ຜົນໄດ້ຮັບທາງລົບ. Knowledge Graph Article entities ມີຄະແນນ sentiment (ທ່ານສາມາດເບິ່ງພວກມັນໄດ້ໃນຜົນການຄົ້ນຫາ) ທີ່ໄປຈາກ -1 ໄປຫາ negative ຫຼາຍທີ່ສຸດ 1 ໄປຫາ positive ຫຼາຍທີ່ສຸດ. ໃນເບື້ອງຕົ້ນ, ຂ້າພະເຈົ້າພຽງແຕ່ເລືອກລາຍການທີ່ມີຄວາມຮູ້ສຶກຫນ້ອຍກວ່າຫຼືເທົ່າກັບ 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 ສໍາລັບ Knowledge Graph. ລາຍການໃຫມ່ທີ່ແທ້ຈິງພຽງແຕ່ມີການເພີ່ມ size=25 ເພື່ອຮັກສາຜົນໄດ້ຮັບກໍານົດຂອບເຂດຈໍາກັດທີ່ສົມເຫດສົມຜົນ.


ຂ້ອຍໂທຫາ API, ພິມຜົນໄດ້ຮັບທັງຫມົດທີ່ພົບ (ຈາກຜົນໄດ້ຮັບ hits ) ແລະຫຼັງຈາກນັ້ນ iterate ໃນແຕ່ລະສະແດງຂໍ້ມູນນ້ອຍໆຈາກຜົນໄດ້ຮັບ. ນີ້ແມ່ນບາງຜົນໄດ້ຮັບ:


 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 , ລະບົບການເຮັດວຽກທີ່ມີຄວາມຍືດຫຍຸ່ນ ຢ່າງບໍ່ຫນ້າເຊື່ອ ທີ່ຂ້ອຍໄດ້ໃຊ້ຫຼາຍຄັ້ງໃນອະດີດ. ນີ້ແມ່ນຂະບວນການເຮັດວຽກທັງໝົດທີ່ມີແຕ່ລະພາກສ່ວນທີ່ສ້າງຂຶ້ນ:


ແຜນວາດຂະບວນການເຮັດວຽກ


ຂ້ອຍເລີ່ມຂັ້ນຕອນການເຮັດວຽກຂອງຂ້ອຍດ້ວຍຕົວກະຕຸ້ນທີ່ອີງໃສ່ຕາຕະລາງທີ່ງ່າຍດາຍ, ie, ເວລາທີ່ຈະດໍາເນີນການ. ນີ້ແມ່ນສິ່ງທີ່ມັກ, ແຕ່ຂ້ອຍເລືອກທຸກໆອາທິດ, ໃນວັນອາທິດ, ເວລາ 1 ໂມງແລງ.


ຂັ້ນຕອນຕໍ່ໄປ, getArticles , ຈັດການກັບເຫດຜົນທີ່ຂ້ອຍໄດ້ສະແດງກ່ອນຫນ້ານີ້, ແຕ່ຕອນນີ້ຢູ່ໃນ "ຕົວຈັດການ Pipedream", ເຊິ່ງເປັນວິທີມາດຕະຖານທີ່ຈະຂຽນຂັ້ນຕອນລະຫັດໃນ Pipedream workflow.


 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 ສໍາລັບ mail APIs.


ເມື່ອດໍາເນີນການ, ຂ້ອຍໄດ້ຮັບອີເມວທີ່ສວຍງາມທີ່ມີບັນຊີລາຍຊື່ຂອງບົດຄວາມແລະຄວາມຮູ້ສຶກຂອງເຂົາເຈົ້າ:


ຕົວຢ່າງອີເມວ


ຖ້າທ່ານເລືອກທີ່ຈະໃຫ້ Pipedream ປັ່ນ, ທ່ານສາມາດຊອກຫາຂະບວນການເຮັດວຽກຂອງຂ້ອຍໄດ້ທີ່ນີ້: https://github.com/cfjedimaster/General-Pipedream-AI-Stuff/tree/production/report-on-sentiment-p_gYCeNbG

ຕໍ່ໄປແມ່ນຫຍັງ?

ນີ້ແມ່ນພຽງແຕ່ຫນຶ່ງຕົວຢ່າງຂອງການໃຊ້ Knowledge Graph API ຂອງ Diffbot, ແລະເປັນຂໍ້ສັງເກດ, ບົດຄວາມແມ່ນພຽງແຕ່ຫນຶ່ງໃນຫຼາຍປະເພດຂໍ້ມູນທີ່ທ່ານສາມາດຄົ້ນຫາໄດ້. ທຸກຢ່າງທີ່ຂ້ອຍເຮັດຢູ່ນີ້ແມ່ນຍັງເຮັດຢູ່ໃນ ບັນຊີຟຣີໝົດ , ດັ່ງນັ້ນເຈົ້າສາມາດສະໝັກໄດ້ຢ່າງແທ້ຈິງ ແລະລອງໃຊ້ມັນເອງ. ຂ້ອຍ ກຳ ລັງຈະຂຸດຂື້ນຕື່ມເພື່ອໃຫ້ຂ້ອຍຮູ້ຖ້າທ່ານມີຄໍາຖາມໃດໆ!

L O A D I N G
. . . comments & more!

About Author

Raymond Camden HackerNoon profile picture
Raymond Camden@raymondcamden
Father, husband, web nerd who builds too many cat-based demos. Love Jamstack, serverless, JavaScript, Python.

ວາງປ້າຍ

ບົດ​ຄວາມ​ນີ້​ໄດ້​ຖືກ​ນໍາ​ສະ​ເຫນີ​ໃນ...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks