예제 #1
0
파일: distance.go 프로젝트: postfix/go2vec
func main() {
	flag.Parse()

	if flag.NArg() != 1 {
		fmt.Fprintln(os.Stderr, "Usage: distance vectors.bin")
		os.Exit(1)
	}

	f, err := os.Open(flag.Arg(0))
	defer f.Close()
	if err != nil {
		log.Fatal(err)
	}

	embeds, err := go2vec.ReadWord2VecBinary(bufio.NewReader(io.Reader(f)), true)
	if err != nil {
		log.Fatal(err)
	}

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	for scanner.Scan() {
		token := scanner.Text()
		results, err := embeds.Similarity(token, 10)
		if err != nil {
			fmt.Println(os.Stderr, err.Error())
			os.Exit(1)
		}

		for _, wordSimilarity := range results {
			fmt.Println(wordSimilarity.Word, wordSimilarity.Similarity)
		}
	}
}
예제 #2
0
파일: io.go 프로젝트: danieldk/dparnn
func ReadEmbeddingsOrExit(config Embedding) *go2vec.Embeddings {
	if config.Filename == "" {
		return nil
	}

	if config.Normalize {
		log.Printf("Reading normalized vectors from %s...\n", config.Filename)
	} else {
		log.Printf("Reading vectors from %s...\n", config.Filename)
	}

	vecf, err := os.Open(config.Filename)
	ExitIfError("Cannot open vectors file: ", err)
	defer vecf.Close()

	vecs, err := go2vec.ReadWord2VecBinary(bufio.NewReader(vecf), config.Normalize)
	ExitIfError("Cannot read vectors: ", err)

	return vecs
}
예제 #3
0
파일: analogy.go 프로젝트: postfix/go2vec
func main() {
	flag.Parse()

	if flag.NArg() != 1 {
		fmt.Fprintln(os.Stderr, "Usage: analogy vectors.bin")
		os.Exit(1)
	}

	f, err := os.Open(flag.Arg(0))
	defer f.Close()
	if err != nil {
		log.Fatal(err)
	}

	embeds, err := go2vec.ReadWord2VecBinary(bufio.NewReader(io.Reader(f)), true)
	if err != nil {
		log.Fatal(err)
	}

	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanLines)
	for scanner.Scan() {
		line := scanner.Text()

		parts := strings.Split(line, " ")
		if len(parts) != 3 {
			fmt.Fprintf(os.Stderr, "Skipping line that does not have three words: %s\n", line)
			continue
		}

		results, err := embeds.Analogy(parts[0], parts[1], parts[2], 10)
		if err != nil {
			fmt.Fprintln(os.Stderr, err.Error())
			continue
		}

		for _, wordSimilarity := range results {
			fmt.Println(wordSimilarity.Word, wordSimilarity.Similarity)
		}
	}
}
예제 #4
0
파일: main.go 프로젝트: postfix/go2vec
func main() {
	flag.Parse()

	if flag.NArg() != 1 {
		os.Exit(1)
	}

	f, err := os.Open(flag.Arg(0))
	common.ExitIfError("Cannot open file: ", err)
	defer f.Close()

	embeds, err := go2vec.ReadWord2VecBinary(bufio.NewReader(f), true)
	common.ExitIfError("Cannot read vectors: ", err)

	embeds.Iterate(func(word string, embedding []float32) bool {
		fmt.Print(word + " ")

		fmt.Println(floatSliceToString(embedding))

		return true
	})
}