Na aula foi repassado que a função setnumfeatures = 50 limita a 50 palavras a seleção, ficou uma duvida, como é selecionada essas 50 palavras? é por vezes que a palavra aparece de maior para menor ou por ordem de registro na relação?
Na aula foi repassado que a função setnumfeatures = 50 limita a 50 palavras a seleção, ficou uma duvida, como é selecionada essas 50 palavras? é por vezes que a palavra aparece de maior para menor ou por ordem de registro na relação?
Oi João, tudo bem?
A seleção dessas 50 palavras é feita através do algoritmo de hashing. Esse algoritmo atribui um número único para cada palavra do seu conjunto de dados. Em seguida, ele seleciona as 50 palavras com os números mais baixos como as mais relevantes.
Por exemplo, se você tiver as palavras "casa", "carro" e "computador" no seu conjunto de dados, o algoritmo de hashing atribuirá números únicos para cada uma delas. Digamos que "casa" tenha o número 1, "carro" o número 2 e "computador" o número 3. Se você definir setnumfeatures = 2
, o algoritmo selecionará as duas palavras com os números mais baixos, ou seja, "casa" e "carro".
Um abraço e bons estudos.
minha dúvida é a respeito dessa marcação, como ele define oq vai ser 1,2 e3?
Oii João,
A seleção das palavras não é baseada em contagens ou ordem de registro, mas sim no algoritmo de hashing que atribui números únicos às palavras.
Para entender como o algoritmo de hashing seleciona as palavras, é importante primeiro compreender o conceito de Hashing TF.
O Hashing TF é uma técnica usada para converter palavras ou termos de texto em números. Isso é frequentemente usado em processamento de linguagem natural (NLP) para representar palavras de maneira eficiente em um formato numérico, que é adequado para algoritmos de aprendizado de máquina. A ideia principal é mapear palavras em um espaço vetorial fixo, geralmente de dimensões limitadas (neste caso, 50, de acordo com sua pergunta).
O algoritmo de hashing em Hashing TF atribui a cada palavra um número único dentro desse espaço vetorial limitado. A atribuição é feita de forma determinística, ou seja, a mesma palavra sempre será mapeada para o mesmo número, desde que as condições de hashing permaneçam as mesmas.
Para explicar como as palavras são selecionadas com base nos números atribuídos, considere um exemplo simples usando um conjunto de palavras: "casa", "carro" e "computador". Vamos supor que o algoritmo de hashing atribuiu os seguintes números únicos a cada uma delas:
Agora, suponha que você deseja limitar a seleção a apenas 2 palavras, definindo setNumFeatures = 2
. O algoritmo de hashing selecionará as duas palavras com os números mais baixos. Neste caso, "casa" e "carro" têm os números mais baixos (1 e 2), então essas duas palavras serão selecionadas.
A seleção não depende da frequência com que as palavras aparecem no conjunto de dados ou da ordem em que foram registradas. É puramente baseada no número atribuído a cada palavra pelo algoritmo de hashing e na escolha do valor setNumFeatures
. Você pode pensar nisso como uma maneira de "mapear" as palavras em um espaço vetorial limitado e escolher as que possuem os menores números nesse espaço.
Aqui está um exemplo simples em Python usando a biblioteca Spark para ilustrar como isso funciona:
from pyspark.ml.feature import HashingTF
# Crie um objeto HashingTF com 2 recursos (features)
hashingTF = HashingTF(inputCol="palavras", outputCol="features", numFeatures=2)
# Exemplo de dados de entrada com palavras
dados = [("casa carro computador"), ("carro casa"), ("computador casa")]
# Crie um DataFrame
df = spark.createDataFrame(dados, ["palavras"])
# Aplique o Hashing TF aos dados
modelo = hashingTF.transform(df)
# Mostre o resultado
modelo.select("palavras", "features").show()
Neste exemplo, o numFeatures
é definido como 2. As palavras "casa" e "carro" foram selecionadas como as mais relevantes com base no número atribuído pelo algoritmo de hashing.
Lembre-se de que, devido à natureza do algoritmo de hashing, pode haver colisões, ou seja, duas palavras diferentes podem ser mapeadas para o mesmo número em casos raros. No entanto, essas colisões são geralmente tratadas adequadamente pelo algoritmo para garantir que as palavras sejam representadas de forma única.
Espero que esta explicação tenha esclarecido como as palavras são selecionadas com base no setNumFeatures
em Hashing TF. A seleção é determinística e não depende da frequência ou ordem das palavras, mas sim dos números únicos atribuídos a cada palavra pelo algoritmo de hashing.
Um abraço e bons estudos.