Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AlinaSka1993
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 4
#1

Конвертация из Python в C++ - C++

15.05.2013, 22:56. Просмотров 872. Ответов 0
Метки нет (Все метки)

Помогите переконвертировать следующие программы из python в c++:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
'''
Created on Aug 4, 2011
 
@author: alexpak <irokez@gmail.com>
'''
import config
import liblinearutil as svm
 
tagset = ['S', 'A', 'NUM', 'A-NUM', 'V', 'ADV', 'PRAEDIC', 'PARENTH', 'S-PRO', 'A-PRO', 'ADV-PRO', 'PRAEDIC-PRO', 'PR', 'CONJ', 'PART', 'INTJ', 'INIT', 'NONLEX']
tag_id = {}
tag_inv = {}
for i in range(0, len(tagset)):
    tag_id[tagset[i]] = i + 1
    tag_inv[i + 1] = tagset[i]
 
class Tagger:
    def __init__(self):
        self.chain_len = 3
        self._features = TaggerFeatures()
        pass
 
    def load(self, modelname, featuresname):
        self._svm_model = svm.load_model(modelname)
        self._features.load(open(featuresname, 'rb'))
 
    def save(self, modelname, featuresname):
        svm.save_model(modelname, self._svm_model)
        self._features.save(open(featuresname, 'wb'))
 
    def get_label_id(self, pos):
        return tag_id[pos] if pos in tag_id else 0
 
    def get_label(self, id):
        return tag_inv[id] if id in tag_inv else '?'
 
    def train(self, sentences, labels, cross_validation = False):
        x = []
        y = []
 
        for i in range(0, len(sentences)):
            sentence = sentences[i]
            prev = []
 
            j = 0
            for word in sentence:
                body = word.lower()
 
                featurespace = self._construct_featurespace(body, prev)
 
                prev.append((body, labels[i][j]))
                if len(prev) > self.chain_len:
                    del(prev[0])
 
                x.append(featurespace.featureset)
                j += 1
 
            y.extend(labels[i])
 
        prob = svm.problem(y, x)
 
        if cross_validation:
            param = svm.parameter('-c 1 -v 4 -s 4')
            svm.train(prob, param)
        else:
            param = svm.parameter('-c 1 -s 4')
            self._svm_model = svm.train(prob, param)
 
    def label(self, sentence):
        labeled = []
        prev = []
        for word in sentence:
            body = word.lower()
 
            featurespace = self._construct_featurespace(body, prev)
 
            p_label, _, _ = svm.predict([0], [featurespace.featureset], self._svm_model, '')
            label = p_label[0]
 
            prev.append((body, label))
            if len(prev) > self.chain_len:
                del(prev[0])
 
            labeled.append((word, label))
 
        return labeled
 
    def _construct_featurespace(self, word, prev):
        featurespace = ml.FeatureSpace()
 
        featurespace.add({1: len(word)}, 10)
        featurespace.add(self._features.from_suffix(word))
        featurespace.add(self._features.from_prefix(word))
        featurespace.add(self._features.from_body(word))
 
        for item in prev:
            featurespace.add({1: item[1]}, 100)
#           featurespace.add(features.from_suffix(item[0]))
#           featurespace.add(features.from_prefix(item[0]))
#           featurespace.add(features.from_body(item[0]))
 
        return featurespace
 
 
import pickle
import ml
class TaggerFeatures:
    def __init__(self):
        self._body_id = {}
        self._suffix_id = {}
        self._prefix_id = {}
 
        self._train = True
        self._featurespace = ml.FeatureSpace()
 
    def load(self, fp):
        (self._body_id, self._suffix_id, self._prefix_id) = pickle.load(fp)
        self._train = False
 
    def save(self, fp):
        pickle.dump((self._body_id, self._suffix_id, self._prefix_id), fp)
 
    def from_body(self, body):
        featureset = {}
        if self._train:
            if body not in self._body_id:
                self._body_id[body] = len(self._body_id) + 1
 
            featureset[self._body_id[body]] = 1
        else:
            if body in self._body_id:
                featureset[self._body_id[body]] = 1
 
        return featureset
 
    def from_suffix(self, body):
        featureset = {}
 
        suffix2 = body[-2:]
        if suffix2 not in self._suffix_id:
            self._suffix_id[suffix2] = len(self._suffix_id) + 1
        featureset[self._suffix_id[suffix2]] = 1
 
        suffix3 = body[-3:]
        if suffix3 not in self._suffix_id:
            self._suffix_id[suffix3] = len(self._suffix_id) + 1
        featureset[self._suffix_id[suffix3]] = 1
 
        return featureset
 
    def from_prefix(self, body):
        featureset = {}
 
        prefix2 = body[:2]
        if prefix2 not in self._prefix_id:
            self._prefix_id[prefix2] = len(self._prefix_id) + 1
        featureset[self._prefix_id[prefix2]] = 1
 
        prefix3 = body[:3]
        if prefix3 not in self._prefix_id:
            self._prefix_id[prefix3] = len(self._prefix_id) + 1
        featureset[self._prefix_id[prefix3]] = 1
 
        return featureset
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 22:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конвертация из Python в C++ (C++):

Конвертация - C++
Подскажите пожалуйста код как считать в бинарном виде файл и вывести его в виде 0 и 1 и соответственно записать файл в бинарном виде

char конвертация - C++
Здравствуйте, есть кусок кода какой в принципе понятен как он работает ну вот только не могу понять строку sum=min+max+carry-2*'0';...

Конвертация функции VB на С++ - C++
Function sXOR(sText, sKey) On Error Resume Next Dim i, s, k For i = 1 To Len(sText) s = Mid(sText, i,...

Конвертация из TCHAR - C++
Всем доброго времени суток. Такой вопрос: как конвертировать числовую величину в TCHAR и обратно ?? Если кому-то нужен код, для того...

Конвертация типов с++ - C++
int p=255; string s=p; в результате s='я', а как внести p в s как число, чтобы s={'2','5','5'} ? только посимвольно или можно как-то...

Конвертация в wchar_t - C++
Прочитал что если перед строковым литералом написать L то он будет приведён к типу wchar_t, но почему-то на выходе у меня получается адрес,...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 22:56
Привет! Вот еще темы с ответами:

Конвертация строк. - C++
Существует задача преобразования текста, читаемого из файла в кодировке ANSI в кодировку ASCII, чтобы русский текст нормально отражался в...

Конвертация из int в char - C++
есть длина строки которая int или даже 8 байтный long, но если в ней число &lt; 255 то мне нужно её положить в 1 байт (char), но тут...

Конвертация потока данных - C++
Здравствуйте! Стоит такая задача. На отдельный прибор приходят данные в аналоговом виде(поступают со спутника). Далее они оцифровываются...

Конвертация кода из с++ в java - C++
Доброго времени суток. Перейду сразу к сути. Я затеял перевод кода из c++ в java, код простой, думал, что труда мне это не составит, однако...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.