Sha256: 1ed50180c9ae61a9c962eac9032a0cfe2f614959d766ebecfe039aa8eaa5b6af

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

#pragma once
#include <random>
#include <exception>
#include <unordered_map>
#include <vector>
#include <iostream>
#include <sstream>
#include <cassert>
#include "serializer.hpp"

namespace tomoto
{
	using Vid = uint32_t;
	static constexpr Vid non_vocab_id = (Vid)-1;
	static constexpr Vid rm_vocab_id = (Vid)-2;
	using Tid = uint16_t;
	static constexpr Tid non_topic_id = (Tid)-1;
	using Float = float;

	struct VidPair : public std::pair<Vid, Vid>
	{
		using std::pair<Vid, Vid>::pair;
	};

	class Dictionary
	{
	protected:
		std::unordered_map<std::string, Vid> dict;
		std::vector<std::string> id2word;
	public:

		Dictionary();
		~Dictionary();

		Dictionary(const Dictionary&);
		Dictionary& operator=(const Dictionary&);

		Dictionary(Dictionary&&) noexcept;
		Dictionary& operator=(Dictionary&&) noexcept;

		Vid add(const std::string& word);

		size_t size() const { return dict.size(); }
		
		const std::string& toWord(Vid vid) const;
		
		Vid toWid(const std::string& word) const;

		void serializerWrite(std::ostream& writer) const;
		
		void serializerRead(std::istream& reader);

		uint64_t computeHash(uint64_t seed) const;

		void swap(Dictionary& rhs);

		void reorder(const std::vector<Vid>& order);

		const std::vector<std::string>& getRaw() const;

		Vid mapToNewDict(Vid v, const Dictionary& newDict) const;

		std::vector<Vid> mapToNewDict(const std::vector<Vid>& v, const Dictionary& newDict) const;

		std::vector<Vid> mapToNewDictAdd(const std::vector<Vid>& v, Dictionary& newDict) const;
	};

}

namespace std
{
	template<>
	struct hash<tomoto::VidPair>
	{
		size_t operator()(const tomoto::VidPair& p) const
		{
			return hash<size_t>{}(p.first) ^ hash<size_t>{}(p.second);
		}
	};
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tomoto-0.5.1 vendor/tomotopy/src/Utils/Dictionary.h
tomoto-0.5.0 vendor/tomotopy/src/Utils/Dictionary.h
tomoto-0.4.1 vendor/tomotopy/src/Utils/Dictionary.h