mirror of
https://github.com/arnaucube/flock-botnet.git
synced 2026-02-07 11:26:45 +01:00
started markov, get the probabilities of states and nextStates
This commit is contained in:
9
main.go
9
main.go
@@ -16,12 +16,14 @@ func main() {
|
|||||||
c.Purple("https://github.com/arnaucode/twFlock")
|
c.Purple("https://github.com/arnaucode/twFlock")
|
||||||
fmt.Println("version " + version)
|
fmt.Println("version " + version)
|
||||||
fmt.Println("Reading flockConfig.json file")
|
fmt.Println("Reading flockConfig.json file")
|
||||||
flock := readConfigTokensAndConnect()
|
//flock := readConfigTokensAndConnect()
|
||||||
|
var flock Flock
|
||||||
fmt.Println("---------------")
|
fmt.Println("---------------")
|
||||||
newcommand := bufio.NewReader(os.Stdin)
|
newcommand := bufio.NewReader(os.Stdin)
|
||||||
fmt.Print("Please select command number")
|
fmt.Print("Please select command number")
|
||||||
options := `
|
options := `
|
||||||
1 - Tweet from flock of bots
|
1 - Tweet from flock of bots
|
||||||
|
2 - Markov
|
||||||
0 - Exit script
|
0 - Exit script
|
||||||
option to select: `
|
option to select: `
|
||||||
for {
|
for {
|
||||||
@@ -35,6 +37,11 @@ option to select: `
|
|||||||
fmt.Println("selected 1 - Tweet from flock of bots")
|
fmt.Println("selected 1 - Tweet from flock of bots")
|
||||||
optionTweetFromFlock(flock)
|
optionTweetFromFlock(flock)
|
||||||
break
|
break
|
||||||
|
case "2":
|
||||||
|
fmt.Println("selected 2 - Markov")
|
||||||
|
_ = markov.train("the", "text.txt")
|
||||||
|
//fmt.Println(text)
|
||||||
|
break
|
||||||
case "0":
|
case "0":
|
||||||
fmt.Println("selected 0 - exit script")
|
fmt.Println("selected 0 - exit script")
|
||||||
os.Exit(3)
|
os.Exit(3)
|
||||||
|
|||||||
92
markov.go
Normal file
92
markov.go
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Markov struct{}
|
||||||
|
|
||||||
|
/*type NextState struct {
|
||||||
|
Word string
|
||||||
|
Count int
|
||||||
|
Prob float64
|
||||||
|
}*/
|
||||||
|
type State struct {
|
||||||
|
Word string
|
||||||
|
Count int
|
||||||
|
Prob float64
|
||||||
|
NextStates []State
|
||||||
|
}
|
||||||
|
|
||||||
|
var markov Markov
|
||||||
|
|
||||||
|
func addWordToStates(states []State, word string) ([]State, int) {
|
||||||
|
iState := -1
|
||||||
|
for i := 0; i < len(states); i++ {
|
||||||
|
if states[i].Word == word {
|
||||||
|
iState = i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if iState > 0 {
|
||||||
|
states[iState].Count++
|
||||||
|
} else {
|
||||||
|
var tempState State
|
||||||
|
tempState.Word = word
|
||||||
|
tempState.Count = 1
|
||||||
|
|
||||||
|
states = append(states, tempState)
|
||||||
|
iState = len(states) - 1
|
||||||
|
}
|
||||||
|
//fmt.Println(iState)
|
||||||
|
return states, iState
|
||||||
|
}
|
||||||
|
|
||||||
|
func countWordsProb(words []string) {
|
||||||
|
var states []State
|
||||||
|
totalWordsCount := 0
|
||||||
|
//count words
|
||||||
|
for i := 0; i < len(words); i++ {
|
||||||
|
var iState int
|
||||||
|
totalWordsCount++
|
||||||
|
states, iState = addWordToStates(states, words[i])
|
||||||
|
if iState != len(words)-1 {
|
||||||
|
states[iState].NextStates, _ = addWordToStates(states[iState].NextStates, words[iState+1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//count prob
|
||||||
|
for i := 0; i < len(states); i++ {
|
||||||
|
states[i].Prob = (float64(states[i].Count) / float64(totalWordsCount) * 100)
|
||||||
|
for j := 0; j < len(states[i].NextStates); j++ {
|
||||||
|
states[i].NextStates[j].Prob = (float64(states[i].NextStates[j].Count) / float64(totalWordsCount) * 100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("totalWordsCount: " + strconv.Itoa(totalWordsCount))
|
||||||
|
fmt.Println(states)
|
||||||
|
}
|
||||||
|
|
||||||
|
func textToWords(text string) []string {
|
||||||
|
s := strings.Split(text, " ")
|
||||||
|
words := s
|
||||||
|
return words
|
||||||
|
}
|
||||||
|
|
||||||
|
func readText(path string) (string, error) {
|
||||||
|
data, err := ioutil.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
//Do something
|
||||||
|
}
|
||||||
|
content := string(data)
|
||||||
|
return content, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (markov Markov) train(firstWord string, path string) string {
|
||||||
|
text, _ := readText(path)
|
||||||
|
words := textToWords(text)
|
||||||
|
countWordsProb(words)
|
||||||
|
return text
|
||||||
|
}
|
||||||
1
text.txt
Normal file
1
text.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Argus Panoptes (or Argos) is a many-eyed giant in Greek mythology. The figure is known for having spawned the saying "the eyes of Argus", as in to be "followed by", "trailed by", "watched by", et cetera the eyes; the saying is used to describe being subject to strict scrutiny in one's actions to an invasive, distressing degree. The monstrous entity has been either directly included or indirectly alluded to in a wide variety of works influenced by Greco-Roman thought over the past several centuries.
|
||||||
Reference in New Issue
Block a user