我需要一个代码,根据形成的语料库的统计分布,随机生成会话的𝑛个重要单词的列表,也就是说,将根据该语料库中所分配的频率来生成它们。
我从这个链接开始,我已经对其进行了清理,删除了停用词(西班牙语),最常留下500个单词:
import requests wiki_url = "https://es.wiktionary.org/wiki/Wikcionario:Frecuentes-(1-1000)-Subt%C3%ADtulos_de_pel%C3%ADculas" wiki_texto = requests.get(wiki_url).text from bs4 import BeautifulSoup wiki_datos = BeautifulSoup(wiki_texto, "html") wiki_filas = wiki_datos.findAll("tr") print(wiki_filas[1]) print("...............................") wiki_celdas = wiki_datos.findAll("td") print(wiki_celdas[0:]) fila_1 = wiki_celdas[0:] info_1 = [elemento.get_text() for elemento in fila_1] print(fila_1) print(info_1) info_1[0] = int(float(info_1[0])) print(info_1) print("...............................") num_or = [int(float(elem.findAll("td")[0].get_text())) for elem in wiki_filas[1:]] palabras = [elem.findAll("td")[1].get_text().rstrip() for elem in wiki_filas[1:]] frecuencia = [elem.findAll("td")[2].get_text().rstrip() for elem in wiki_filas[1:]] print(num_or[0:]) print(palabras[0:]) print(frecuencia[0:]) from pandas import DataFrame tabla = DataFrame([num_or, palabras, frecuencia]).T tabla.columns = ["Núm. orden", "Palabras", "Frecuencia"] print(tabla) print("...............................") import pandas as pd from nltk.corpus import stopwords prep = stopwords.words('spanish') print(prep) tabla_beta = pd.read_html(wiki_url)[0] tabla_beta.columns = ["Núm. orden", "Palabras", "Frecuencia"] tabla_beta = tabla_beta[~tabla_beta['Palabras'].isin(prep)].head(500) print(tabla_beta)
得到一个500个寄存器和3列的数据帧,最后一列是每个字的频率:
我现在需要的是一个代码,该代码会随机生成一个包含这些单词的句子,并遵守第3列中的频率。
欢迎任何帮助!谢谢。
我需要一个代码,根据形成的语料库的统计分布,随机生成会话的𝑛个重要单词的列表,也就是说,将根据...生成这些单词。...
Numpy已经提供了内置参数“ p”-代表概率-在random.choice中生成加权样本。最小示例:
import pandas as pd, numpy as np
from collections import Counter
df = pd.DataFrame(dict(words=["a","e","i","o","u"],weights=np.random.randint(5,15,5)))
df["normalized"]=df["weights"]/sum(df["weights"].values)
print(df)
words weights normalized
0 a 9 0.204545
1 e 13 0.295455
2 i 8 0.181818
3 o 6 0.136364
4 u 8 0.181818
n = 3
l=np.random.choice(df.words,size=(n,),p=df.normalized)
print(l)
array(['u', 'i', 'i'], dtype=object)