Cum de a face un cuvânt conta în MongoDB

0

Problema

Imi poate recomanda cineva un mod în care pot face acest cod Python ca un MongoDB interogare?

import pandas as pd 
data = pd.read_csv("elonmusk.csv") 
from collections import Counter
Counter(" ".join(data["tweet"]).split()).most_common(100)

Caut ajutor pentru a scrie un MongoDB interogare care poate crea o ieșire similară ca codul Python prezentate aici.

Analizând textul de un câmp și se întorc de cuvinte cele mai comune.

enter image description here

Cred MongoDB nor cuvânt link-ul de aici are o soluție similară https://docs.mongodb.com/charts/saas/chart-type-reference/word-cloud/ Cu toate acestea trebuie să scrie codul în MongoDB shell.

Eu nu am fost sigur cum să aplice următoarele Stackoverflow soluție în acest link cele Mai frecvente cuvinte în MongoDB colectie

Multumesc anticipat pentru orice sfat.

mongodb
2021-11-24 00:08:23
1

Cel mai bun răspuns

1

Interogare

  • interogare presupune că textul este pe tweet domeniu
  • meci pentru a găsi cuvinte cu regex (cuvânt conține numai caractere alfanumerice aici)
  • relaxați-vă
  • grup și conta
  • $set pentru a repara erorile de structură (puteți utiliza, de asemenea, proiectul său la fel)
  • un fel de word count
  • limita să păstreze doar cele mai populare 100 de cuvinte

Cod de încercare aici

aggregate(
[{"$match": {"$expr": {"$eq": [{"$type": "$tweet"}, "string"]}}},
 {"$set": 
    {"matches": {"$regexFindAll": {"input": "$tweet", "regex": "\\w+"}}}},
 {"$project": {"tokens": "$matches.match"}},
 {"$unwind": {"path": "$tokens"}},
 {"$group": {"_id": "$tokens", "count": {"$sum": 1}}},
 {"$set": {"word": "$_id", "_id": "$$REMOVE"}},
 {"$sort": {"count": -1}},
 {"$limit": 100}])
2021-12-12 14:34:04

Salut Takis_ apreciez soluție. Am avut câteva probleme încercând să-l rulați. În primul rând am primit eroare ..... agregat nu este definit, așa că am adăugat colecțiile numele înainte cod. db.Tweets.agregate( Acum primesc eroarea asta .... $regexFindAll are nevoie de "input" pentru a fi de tip string" am avut mai devreme setați tweet ca domeniu de la un index de text, dar am renuntat la index și eu sunt încă obtinerea o eroare $regexFindAll are nevoie de "input" pentru a fi de tip string" Asa ca am verificat ce tip de câmp este: typeof db.Tweet.findone().tweet se întoarce șir de sugestii?
Christopher

un document(e) nu trebuie șir tweet ca, aceasta nu este o problemă, $match se poate păstra doar documentele care au tweet ca șir de caractere. Am actualizat răspunsul.
Takis _

Care funcționează perfect Takis, am avut de a face o mică editare pentru a face să funcționeze în coajă și asta a fost prefix codul cu db. și numele colecției Tweets.
Christopher

db.Tweets.agregate( [{"$match": {"$expr": {"$eq": [{"$tip": "$tweet"}, "string"]}}}, {"set$": {"meciuri": {"$regexFindAll": {"intrare": "$tweet", "regex": "\\w+"}}}}, {"$proiect": {"token": "$meciuri.meci"}}, {"$relaxa": {"path": "$jetoane"}}, {"$grup": {"_id": "$token-uri", "conta": {"$suma": 1}}}, {"$set": {"cuvântul": "$_id", "_id": "$$ELIMINA"}}, {"$un fel": {"count": -1}}, {"$limit": 100}])
Christopher

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................