از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تجزیه و تحلیل داده های API با MongoDB، Seaborn و Matplotlib
سرفصلهای مطلب
معرفی
مهارتی که معمولا برای موقعیت های توسعه نرم افزار درخواست می شود، تجربه با پایگاه های داده NoSQL، از جمله MongoDB است. این آموزش جمع آوری داده ها با استفاده از یک API، ذخیره آن در پایگاه داده MongoDB و انجام برخی تجزیه و تحلیل داده ها را بررسی می کند.
با این حال، قبل از ورود به کد، اجازه دهید لحظهای به MongoDB و APIها بپردازیم تا مطمئن شویم که چگونه با دادههایی که جمعآوری میکنیم برخورد خواهیم کرد.
MongoDB و NoSQL
MongoDB شکلی از پایگاه داده NoSQL، امکان ذخیره سازی داده ها در اشکال غیر رابطه ای را فراهم می کند. پایگاههای داده NoSQL با مقایسه آنها با پیشساز/رقیبهایشان – پایگاههای داده SQL به بهترین وجه قابل درک است.
SQL مخفف زبان پرس و جو ساختار و یک نوع ابزار مدیریت پایگاه داده رابطه ای است. پایگاه داده رابطه ای پایگاه داده ای است که داده ها را به صورت مجموعه ای از کلیدها و مقادیر ذخیره می کند و هر ردیف در یک جدول داده دارای کلید منحصر به فرد خود است. مقادیر موجود در پایگاه داده را می توان با جستجوی کلید مربوطه بازیابی کرد. اینگونه است که پایگاه های داده SQL داده ها را ذخیره می کنند، اما پایگاه های داده NoSQL می توانند داده ها را به روش های غیر رابطه ای ذخیره کنند.
NoSQL مخفف “نه فقط SQL” است، که به این واقعیت اشاره دارد که اگرچه پرس و جوهای SQL-esque را می توان با سیستم های NoSQL انجام داد، اما آنها می توانند کارهایی را نیز انجام دهند که پایگاه داده های SQL با آنها مشکل دارند. پایگاههای داده NoSQL دارای طیف وسیعتری از گزینههای ذخیرهسازی برای دادههایی هستند که مدیریت میکنند، و از آنجایی که دادهها به طور دقیق مرتبط نیستند، میتوان آنها را به روشهای بیشتری بازیابی کرد و برخی از عملیاتها را سریعتر کرد. پایگاه های داده NoSQL می توانند افزودن گره ها یا فیلدها را در مقایسه با پایگاه های داده SQL ساده تر کنند.
فریمورک های NoSQL محبوب بسیاری وجود دارد، از جمله MongoDB، OrientDB، InfinityDB، اسپایک هوا، و CosmosDB. MongoDB یک چارچوب خاص NoSQL است که داده ها را به شکل اسناد ذخیره می کند و به عنوان یک پایگاه داده سند گرا عمل می کند.
MongoDB به دلیل تطبیق پذیری و ادغام آسان ابری آن محبوب است و می تواند برای کارهای مختلف مورد استفاده قرار گیرد. MongoDB داده ها را با استفاده از فرمت JSON ذخیره می کند. پرس و جوهای پایگاه داده MongoDB نیز با فرمت JSON ساخته می شوند و به این دلیل که هر دو دستور ذخیره سازی و بازیابی بر اساس هستند. روی با فرمت JSON، به خاطر سپردن و نوشتن دستورات برای MongoDB ساده است.
API ها چیست؟
API ها رابط های برنامه نویسی کاربردی هستند و وظیفه آنها تسهیل ارتباط بین کلاینت ها و سرورها است. APIها اغلب برای تسهیل جمعآوری اطلاعات توسط کسانی ایجاد میشوند که با زبان مورد استفاده توسعهدهندگان برنامه تجربه کمتری دارند.
APIها همچنین میتوانند روشهای مفیدی برای کنترل جریان اطلاعات از یک سرور باشند، و علاقهمندان به دسترسی به اطلاعات آن را تشویق میکنند تا از کانالهای رسمی برای انجام این کار استفاده کنند، نه ساختن یک وب اسکراپر. رایج ترین API ها برای وب سایت ها هستند باقی مانده APIهای (انتقال وضعیت نمایندگی)، که از درخواستها و پاسخهای استاندارد HTTP برای ارسال، دریافت، حذف و اصلاح دادهها استفاده میکنند. ما به یک REST API دسترسی خواهیم داشت و درخواست های خود را در قالب HTTP برای این آموزش ارائه خواهیم کرد.
از چه API استفاده خواهیم کرد؟
API که ما استفاده خواهیم کرد، API GameSpot است. GameSpot یکی از بزرگترین سایت های بررسی بازی های ویدیویی است روی وب و API آن قابل دسترسی است اینجا.
راه اندازی
قبل از شروع، باید مطمئن شوید که یک کلید API برای GameSpot دریافت کرده اید. همچنین باید مطمئن شوید که MongoDB و کتابخانه پایتون آن را نصب کرده باشید. دستورالعمل نصب Mongo را می توانید پیدا کنید اینجا.
کتابخانه PyMongo را می توان به سادگی با اجرای زیر نصب کرد:
$ pip install pymongo
همچنین ممکن است بخواهید نصب کنید قطب نما MongoDB برنامه ای که به شما امکان می دهد به راحتی جنبه های پایگاه داده MongoDB را با رابط کاربری گرافیکی تجسم و ویرایش کنید.
ایجاد پایگاه داده MongoDB
اکنون می توانیم پروژه خود را با ایجاد پایگاه داده MongoDB شروع کنیم. ابتدا به واردات خود رسیدگی می کنیم. خوب import را MongoClient
از PyMongo، و همچنین requests
و pandas
:
from pymongo import MongoClient
import requests
import pandas as pd
هنگام ایجاد پایگاه داده با MongoDB، ابتدا باید به مشتری متصل شویم و سپس از مشتری برای ایجاد پایگاه داده مورد نظر خود استفاده کنیم:
client = MongoClient('127.0.0.1', 27017)
db_name = 'gamespot_reviews'
db = client(db_name)
MongoDB میتواند چندین مجموعه داده را در یک پایگاه داده ذخیره کند، بنابراین باید نام مجموعهای را که میخواهیم استفاده کنیم نیز تعریف کنیم:
reviews = db.reviews
خودشه. پایگاه داده و مجموعه ما ایجاد شده است و ما آماده ایم تا شروع به درج داده ها در آن کنیم. خیلی ساده بود، اینطور نیست؟
با استفاده از API
ما اکنون آماده استفاده از GameSpot API برای جمع آوری داده هستیم. با نگاهی به مستندات API اینجا، می توانیم فرمتی را که درخواست های ما باید در آن باشد تعیین کنیم.
ما باید درخواست های خود را به یک URL پایه که حاوی کلید API ما است، ارسال کنیم. API GameSpot منابع متعددی دارد که میتوانیم دادهها را از آنها استخراج کنیم. به عنوان مثال، آنها منبعی دارند که دادههای مربوط به بازیهایی مانند تاریخ انتشار و کنسولها را فهرست میکند.
با این حال، ما به منابع آنها برای بررسی بازیها علاقهمندیم و چند فیلد خاص را از منبع API استخراج خواهیم کرد. همچنین، GameSpot از شما می خواهد که یک منحصر به فرد را مشخص کنید عامل کاربر شناسه هنگام درخواست، که با ایجاد یک هدر که به آن ارسال می کنیم، انجام می دهیم requests
تابع:
headers = {
"user_agent": "(YOUR IDENTIFIER) API Access"
}
games_base = "http://www.gamespot.com/api/reviews/?api_key=(YOUR API KEY HERE)&format=json"
ما فیلدهای داده زیر را می خواهیم: id
، title
، score
، deck
، body
، good
، bad
:
review_fields = "id,title,score,deck,body,good,bad"
GameSpot فقط اجازه بازگشت 100 نتیجه را در یک زمان می دهد. به همین دلیل، برای به دست آوردن تعداد مناسبی از بررسی ها برای تجزیه و تحلیل، باید طیفی از اعداد را ایجاد کنیم و از طریق آنها حلقه بزنیم و 100 نتیجه را در یک زمان بازیابی کنیم.
شما می توانید هر عددی را که می خواهید انتخاب کنید. من تصمیم گرفتم همه نظرات آنها را دریافت کنم، که حداکثر 14900 است:
pages = list(range(0, 14900))
pages_list = pages(0:14900:100)
ما یک تابع ایجاد می کنیم که URL پایه، لیست فیلدهایی را که می خواهیم برگردانیم، یک طرح مرتب سازی (صعودی یا نزولی) و offset برای پرس و جو ایجاد کنیم.
تعداد صفحاتی را که میخواهیم حلقه بزنیم، میگیریم، و سپس برای هر 100 ورودی، یک URL جدید ایجاد میکنیم و دادهها را درخواست میکنیم:
def get_games(url_base, num_pages, fields, collection):
field_list = "&field_list=" + fields + "&sort=score:desc" + "&offset="
for page in num_pages:
url = url_base + field_list + str(page)
print(url)
response = requests.get(url, headers=headers).json()
print(response)
video_games = response('results')
for i in video_games:
collection.insert_one(i)
print("Data Inserted")
به یاد بیاورید که MongoDB داده ها را به صورت JSON ذخیره می کند. به همین دلیل باید داده های پاسخ خود را با استفاده از فرمت JSON تبدیل کنیم json()
روش.
پس از اینکه داده ها به JSON تبدیل شدند، ویژگی “نتایج” را از پاسخ دریافت می کنیم، زیرا این بخشی است که در واقع حاوی داده های مورد علاقه ما است. سپس 100 نتیجه مختلف را مرور می کنیم و هر یک از آنها را با استفاده از عبارت در مجموعه خود وارد می کنیم insert_one()
دستور از PyMongo. شما همچنین می توانید همه آنها را در یک لیست قرار داده و استفاده کنید insert_many()
بجای.
بیایید اکنون تابع را فراخوانی کنیم و داده ها را جمع آوری کنیم:
get_games(review_base, pages_list, review_fields, reviews)
چرا ما بررسی نمی کنیم که ببینیم داده های ما همانطور که انتظار داریم در پایگاه داده ما درج شده است؟ ما می توانیم پایگاه داده و محتویات آن را مستقیماً با برنامه Compass مشاهده کنیم:
می بینیم که داده ها به درستی درج شده اند.
ما همچنین می توانیم برخی از بازیابی پایگاه داده و print آنها را برای انجام این کار، ما فقط یک لیست خالی ایجاد می کنیم تا ورودی های خود را ذخیره کرده و از آن استفاده کنیم .find()
فرمان روی مجموعه “بررسی ها”.
هنگام استفاده از find
تابع PyMongo، بازیابی باید به صورت JSON نیز فرمت شود. پارامترهای داده شده به find
تابع یک فیلد و مقدار خواهد داشت.
به طور پیش فرض، MongoDB همیشه مقدار را برمی گرداند _id
فیلد (فیلد ID منحصربهفرد خودش، نه شناسهای که از GameSpot برداشتیم)، اما میتوانیم به آن بگوییم که با تعیین یک 0
ارزش. زمینه هایی که می خواهیم برگردانیم، مانند score
فیلد در این مورد باید a داده شود 1
ارزش:
scores = ()
for score in list(reviews.find({}, {"_id":0, "score": 1})):
scores.append(score)
print(scores(:900))
در اینجا چیزی است که با موفقیت کشیده و چاپ شد:
({'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'}, {'score': '10.0'} ...
همچنین میتوانیم نتایج پرس و جو را به راحتی با استفاده از Pandas به یک چارچوب داده تبدیل کنیم:
scores_data = pd.DataFrame(scores, index=None)
print(scores_data.head(20))
این چیزی است که برگردانده شد:
score
0 10.0
1 10.0
2 10.0
3 10.0
4 10.0
5 10.0
6 10.0
7 10.0
8 10.0
9 10.0
10 10.0
11 10.0
12 10.0
13 10.0
14 10.0
15 10.0
16 10.0
17 9.9
18 9.9
19 9.9
قبل از شروع تجزیه و تحلیل برخی از داده ها، بیایید لحظه ای را در نظر بگیریم تا ببینیم چگونه می توانیم به طور بالقوه دو مجموعه را به هم بپیوندیم. همانطور که گفته شد، GameSpot منابع متعددی برای استخراج داده دارد و ممکن است بخواهیم مقادیری را از پایگاه داده دوم مانند پایگاه داده Games دریافت کنیم.
MongoDB یک پایگاه داده NoSQL است، بنابراین برخلاف SQL برای مدیریت روابط بین پایگاههای داده و پیوستن فیلدهای داده به یکدیگر در نظر گرفته نشده است. با این حال، تابعی وجود دارد که میتواند پیوند پایگاه داده را تقریبی کند – lookup()
.
را lookup()
تابع یک اتصال پایگاه داده را تقلید می کند و می توان آن را با تعیین خط لوله انجام داد، که شامل پایگاه داده ای است که می خواهید عناصر را از آن بپیوندید، و همچنین فیلدهایی که از هر دو سند ورودی می خواهید (localField
) و اسناد “از” (foreignField
).
در نهایت، شما یک نام برای تبدیل اسناد خارجی به آن انتخاب می کنید و آنها با این نام جدید در جدول پاسخ پرسش ما نمایش داده می شوند. اگر پایگاه داده دومی به نام داشتید games
و می خواستم آنها را در یک پرس و جو به هم بپیوندم، می توان این کار را به صورت زیر انجام داد:
pipeline = ({
'$lookup': {
'from': 'reviews',
'localField': 'id',
'foreignField': 'score',
'as': 'score'
}
},)
for doc in (games.aggregate(pipeline)):
print(doc)
تجزیه و تحلیل داده ها
اکنون می توانیم به تجزیه و تحلیل و تجسم برخی از داده های موجود در پایگاه داده جدید خود بپردازیم. بیایید مطمئن شویم که همه توابع مورد نیاز برای تجزیه و تحلیل را داریم.
from pymongo import MongoClient
import pymongo
import pandas as pd
from bs4 import BeautifulSoup
import re
from nltk.corpus import stopwords
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
import string
import en_core_web_sm
import seaborn as sns
فرض کنید میخواهیم برخی از کلمات موجود در بررسیهای بازی GameSpot را تحلیل کنیم. ما آن اطلاعات را در پایگاه داده خود داریم، فقط باید آن را دریافت کنیم.
ما میتوانیم با جمعآوری 40 بررسی برتر (یا هر عددی که میخواهید) از پایگاه داده خود با استفاده از آن شروع کنیم find()
مانند قبل عمل می کند، اما این بار مشخص می کنیم که می خواهیم بر اساس مرتب سازی کنیم score
متغیر و آن را به ترتیب نزولی مرتب کنیم:
d_name = 'gamespot_reviews'
collection_name = 'gamespot'
client = MongoClient('127.0.0.1', 27017)
db = client(d_name)
reviews = db.reviews
review_bodies = ()
for body in list(reviews.find({}, {"_id":0, "body": 1}).sort("score", pymongo.DESCENDING).limit(40)):
review_bodies.append(body)
ما آن پاسخ را به یک قاب داده پاندا تبدیل می کنیم و آن را به یک رشته تبدیل می کنیم. سپس تمام مقادیر داخل را استخراج می کنیم <p>
تگ HTML حاوی متن بررسی، که ما با آن انجام خواهیم داد سوپ زیبا:
reviews_data = pd.DataFrame(review_bodies, index=None)
def extract_comments(input):
soup = BeautifulSoup(str(input), "html.parser")
comments = soup.find_all('p')
return comments
review_entries = extract_comments(str(review_bodies))
print(review_entries(:500))
را ببینید print
بیانیه برای دیدن متن بررسی جمع آوری شده است:
(<p>For anyone who hasn't actually seen the game روی a TV right in front of them, the screenshots look too good to be true. In fact, when you see NFL 2K for the first time right in front of you...)
اکنون که دادههای متن بازبینی را در اختیار داریم، میخواهیم آن را به چند روش مختلف تجزیه و تحلیل کنیم. بیایید سعی کنیم شهودی در مورد انواع کلماتی که معمولاً در 40 بررسی برتر استفاده میشوند، به دست آوریم. ما می توانیم این کار را به روش های مختلف انجام دهیم:
- ما می توانیم یک ابر کلمه ایجاد کنیم
- ما می توانیم همه کلمات را بشماریم و بر اساس تعداد وقوع آنها مرتب کنیم
- ما می توانیم انجام شناسایی موجودیت نامگذاری شده
قبل از اینکه بتوانیم هر گونه تجزیه و تحلیل داده ها را انجام دهیم، باید آن را از قبل پردازش کنیم.
برای پیش پردازش داده ها، می خواهیم یک تابع برای فیلتر کردن ورودی ها ایجاد کنیم. دادههای متنی هنوز مملو از انواع برچسبها و کاراکترهای غیراستاندارد است و ما میخواهیم با دریافت متن خام نظرات بررسی، آنها را حذف کنیم. ما از عبارات منظم برای جایگزینی کاراکترهای غیر استاندارد با فضاهای خالی استفاده خواهیم کرد.
ما نیز از برخی استفاده خواهیم کرد کلمات را متوقف کنید از NLTK (کلمات بسیار رایجی که معنای کمی به متن ما اضافه می کنند) و با ایجاد لیستی برای نگهداری همه کلمات و سپس اضافه کردن کلمات به آن لیست تنها در صورتی که در لیست کلمات توقف ما نباشند، آنها را از متن خود حذف کنید.
ابر کلمه
بیایید زیرمجموعه ای از کلمات مرور را به عنوان یک مجموعه تجسم کنیم. اگر در هنگام تولید بیش از حد بزرگ باشد، می تواند مشکلاتی را با کلمه ابر ایجاد کند.
به عنوان مثال، من 5000 کلمه اول را فیلتر کرده ام:
stop_words = set(stopwords.words('english'))
def filter_entries(entries, stopwords):
text_entries = BeautifulSoup(str(entries), "lxml").text
subbed_entries = re.sub('(^A-Za-z0-9)+', ' ', text_entries)
split_entries = subbed_entries.split()
stop_words = stopwords
entries_words = ()
for word in split_entries:
if word not in stop_words:
entries_words.append(word)
return entries_words
review_words = filter_entries(review_entries, stop_words)
review_words = review_words(5000:)
اکنون می توانیم یک را بسازیم ابر کلمه به راحتی با استفاده از یک کتابخانه WordCloud از پیش ساخته شده است اینجا پیدا شد.
این کلمه ابر اطلاعاتی را به ما می دهد روی چه نوع کلماتی معمولا در بررسی های برتر استفاده می شود:
متأسفانه هنوز پر از کلمات رایج است، به همین دلیل است که فیلتر کردن کلمات مروری با یک طرح فیلتر TF-IDF ایده خوبی است، اما برای اهداف این نمایش ساده، این به اندازه کافی خوب است.
ما در واقع اطلاعاتی در مورد مفاهیمی داریم که در نقد بازی ها صحبت می شود: گیم پلی، داستان، شخصیت ها، جهان، اکشن، مکان ها و غیره.
ما می توانیم برای خودمان تأیید کنیم که این کلمات معمولاً در بررسی بازی ها با نگاهی به یکی از 40 بررسی برتر انتخاب شده یافت می شوند: مایک ماهاردی. نقد و بررسی Uncharted 4:
مطمئناً، این بررسی به اکشن، گیم پلی، شخصیت ها و داستان می پردازد.
اندازه کلمات به ما شهودی درباره اینکه کلمات در این مرورها معمولاً ظاهر میشوند، میدهد، اما همچنین میتوانیم تعداد دفعات نمایش کلمات خاص را نیز بشماریم.
پیشخوان
ما میتوانیم فهرستی از رایجترین کلمات را با تقسیم کردن کلمات و اضافه کردن آنها به فرهنگ لغات به همراه تعداد فردی آنها بدست آوریم، که هر بار که همان کلمه مشاهده میشود، افزایش مییابد.
پس از آن فقط باید استفاده کنیم Counter
و most_common()
تابع:
def get_word_counts(words_list):
word_count = {}
for word in words_list:
word = word.translate(translator).lower()
if word not in stop_words:
if word not in word_count:
word_count(word) = 1
else:
word_count(word) += 1
return word_count
review_word_count = get_word_counts(review_words)
review_word_count = Counter(review_word_count)
review_list = review_word_count.most_common()
print(review_list)
در اینجا شمارش برخی از رایج ترین کلمات آمده است:
(('game', 1231), ('one', 405), ('also', 308), ('time', 293), ('games', 289), ('like', 285), ('get', 278), ('even', 271), ('well', 224), ('much', 212), ('new', 200), ('play', 199), ('level', 195), ('different', 195), ('players', 193) ...)
به نام Entity Recognition
ما همچنین می توانیم با استفاده از شناسایی موجودیت نامگذاری شده انجام دهیم en_core_web_sm
، یک مدل زبان همراه با فضایی. مفاهیم مختلف و ویژگی های زبانی که می توان تشخیص داد فهرست شده است اینجا.
ما باید لیستی از موجودیت ها و مفاهیم نامگذاری شده شناسایی شده را از سند (فهرست کلمات) بگیریم:
doc = nlp(str(review_words))
labels = (x.label_ for x in doc.ents)
items = (x.text for x in doc.ents)
ما میتوانیم print موجودیت های یافت شده و همچنین تعدادی از موجودیت ها.
print(((X.text, X.label_) for X in doc.ents))
print(Counter(labels))
print(Counter(items).most_common(20))
این چیزی است که چاپ شده است:
(('Nintendo', 'ORG'), ('NES', 'ORG'), ('Super', 'WORK_OF_ART'), ('Mario', 'PERSON'), ('15', 'CARDINAL'), ('Super', 'WORK_OF_ART'), ('Mario', 'PERSON'), ('Super', 'WORK_OF_ART') ...)
Counter({'PERSON': 1227, 'CARDINAL': 496, 'ORG': 478, 'WORK_OF_ART': 204, 'ORDINAL': 200, 'NORP': 110, 'PRODUCT': 88, 'GPE': 63, 'TIME': 12, 'DATE': 12, 'LOC': 12, 'QUANTITY': 4 ...)
(('first', 147), ('two', 110), ('Metal', 85), ('Solid', 82), ('GTAIII', 78), ('Warcraft', 72), ('2', 59), ('Mario', 56), ('four', 54), ('three', 42), ('NBA', 41) ...)
فرض کنید میخواستیم رایجترین اصطلاحات شناختهشده را برای دستههای مختلف، مانند افراد و سازمانها ترسیم کنیم. ما فقط باید یک تابع بسازیم تا تعداد کلاس های مختلف موجودیت ها را بدست آوریم و سپس از آن برای بدست آوردن موجودیت های مورد نظر خود استفاده کنیم.
ما فهرستی از نهادها/افراد، سازمانها و GPEهای نامگذاری شده (موقعیتها) را دریافت میکنیم:
def word_counter(doc, ent_name, col_name):
ent_list = ()
for ent in doc.ents:
if ent.label_ == ent_name:
ent_list.append(ent.text)
df = pd.DataFrame(data=ent_list, columns=(col_name))
return df
review_persons = word_counter(doc, 'PERSON', 'Named Entities')
review_org = word_counter(doc, 'ORG', 'Organizations')
review_gpe = word_counter(doc, 'GPE', 'GPEs')
اکنون تنها کاری که باید انجام دهیم این است که تعداد را با یک تابع رسم کنیم:
def plot_categories(column, df, num):
sns.countplot(x=column, data=df,
order=df(column).value_counts().iloc(0:num).index)
plt.xticks(rotation=-45)
plt.show()
plot_categories("Named Entities", review_persons, 30)
plot_categories("Organizations", review_org, 30)
plot_categories("GPEs", review_gpe, 30)
بیایید نگاهی به توطئه های ایجاد شده بیندازیم.
همانطور که از موجودیتهای نامگذاری شده انتظار میرود، بیشتر نتایج به دست آمده نام شخصیتهای بازی ویدیویی است. این کامل نیست، زیرا برخی از اصطلاحات مانند “Xbox” را بهعنوان یک نهاد نامگذاری شده به جای یک سازمان به اشتباه طبقهبندی میکند، اما این هنوز به ما ایدهای درباره شخصیتهایی که در بررسیهای برتر مورد بحث قرار گرفتهاند، میدهد.
طرح سازمانی برخی از توسعه دهندگان و ناشران مناسب بازی مانند پلی استیشن و نینتندو را نشان می دهد، اما مواردی مانند “480p” را نیز به عنوان یک سازمان برچسب گذاری می کند.
در بالا نمودار مربوط به GPE ها یا مکان های جغرافیایی است. به نظر می رسد «هالیوود» و «میامی» اغلب در نقد بازی ها ظاهر می شوند. (تنظیمات بازی ها؟ یا شاید بازبین چیزی را در بازی به سبک هالیوودی توصیف می کند؟)
همانطور که می بینید، انجام شناسایی موجودیت نامگذاری شده و تشخیص مفهوم کامل نیست، اما می تواند به شما در مورد انواع موضوعاتی که در متن مورد بحث قرار می گیرد، شهودی بدهد.
ترسیم مقادیر عددی
در نهایت، میتوانیم مقادیر عددی را از پایگاه داده ترسیم کنیم. بیایید مقادیر امتیاز را از مجموعه بررسی ها دریافت کنیم، آنها را بشماریم و سپس آنها را رسم کنیم:
scores = ()
for score in list(reviews.find({}, {"_id":0, "score": 1})):
scores.append(score)
scores = pd.DataFrame(scores, index=None).reset_index()
counts = scores('score').value_counts()
sns.countplot(x="score", data=scores)
plt.xticks(rotation=-90)
plt.show()
در بالا نمودار تعداد کل نمرات بررسی داده شده است که از 0 تا 9.9 اجرا می شود. به نظر میرسد که بیشترین امتیازهای داده شده 7 و 8 بوده است که به طور مستقیم منطقی است. هفت اغلب متوسط در نظر گرفته می شود روی یک مقیاس مرور ده نقطه ای
نتیجه
جمع آوری، ذخیره، بازیابی و تجزیه و تحلیل داده ها مهارت هایی هستند که در دنیای امروز بسیار مورد تقاضا هستند و MongoDB یکی از رایج ترین پلت فرم های پایگاه داده NoSQL است.
دانستن روش استفاده از پایگاه های داده NoSQL و روش تفسیر داده های موجود در آنها، شما را برای انجام بسیاری از کارهای رایج تجزیه و تحلیل داده ها مجهز می کند.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-20 08:45:07