2013-05-07 7 views
0

Мне нужно сгенерировать функции из текста. Сценарий, который я использую ниже, доступен онлайн, но на самом деле я не знаю, как его запустить, потому что я вообще не знаю python. У меня есть текстовый файл с именем (train.txt) содержит следующиеЗапустить скрипт Python из cmd в windows

He PRP B-NP 
reckons VBZ B-VP 
the DT B-NP 
current JJ I-NP 
account NN I-NP 
deficit NN I-NP 
will MD B-VP 
narrow VB I-VP 
to TO B-PP 
only RB B-NP 
# # I-NP 
1.8 CD I-NP 
billion CD I-NP 
in IN B-PP 
September NNP B-NP 
. . O 

и у меня есть питон скрипт, который преобразует указанный текст в функции, такие как следующие особенности:

B-NP w[0]=He w[1]=reckons w[2]=the  w[0]|w[1]=He|reckons pos[0]=P 
RP  pos[1]=VBZ  pos[2]=DT  pos[0]|pos[1]=PRP|VBZ pos[1]|pos[2]=VB 
Z|DT pos[0]|pos[1]|pos[2]=PRP|VBZ|DT __BOS__ 
... 

Питон скрипт является

# Separator of field values. 
separator = ' ' 

# Field names of the input data. 
fields = 'w pos y' 

# Attribute templates. 
templates = (
    (('w', -2),), 
    (('w', -1),), 
    (('w', 0),), 
    (('w', 1),), 
    (('w', 2),), 
    (('w', -1), ('w', 0)), 
    (('w', 0), ('w', 1)), 
    (('pos', -2),), 
    (('pos', -1),), 
    (('pos', 0),), 
    (('pos', 1),), 
    (('pos', 2),), 
    (('pos', -2), ('pos', -1)), 
    (('pos', -1), ('pos', 0)), 
    (('pos', 0), ('pos', 1)), 
    (('pos', 1), ('pos', 2)), 
    (('pos', -2), ('pos', -1), ('pos', 0)), 
    (('pos', -1), ('pos', 0), ('pos', 1)), 
    (('pos', 0), ('pos', 1), ('pos', 2)), 
    ) 


import crfutils 

def feature_extractor(X): 
    # Apply attribute templates to obtain features (in fact, attributes) 
    crfutils.apply_templates(X, templates) 
    if X: 
    # Append BOS and EOS features manually 
     X[0]['F'].append('__BOS__')  # BOS feature 
     X[-1]['F'].append('__EOS__') # EOS feature 

if __name__ == '__main__': 
    crfutils.main(feature_extractor, fields=fields, sep=separator) 

Оба script.py и crfutils.py существуют в той же папке, я запускаю выше сценарий из ЦМД на Windows 7 следующим образом:

C:\>Python script.py train.txt > train.result.txt 

У меня есть пустой файл под названием train.result.txt и потому, что я новичок в Python (на самом деле просто начать его изучение). Я не знаю, в чем проблема? Я предоставляю аргументы в неправильном порядке? Неправильный формат файла train.txt?

+0

Что делает: питон script.py train.txt вернуться в консоль? –

+0

Он ничего не возвращает !! – Wahedsaw

ответ

1

Вам необходимо пройти в train.txt на стандартном вводе, а не в качестве аргумента командной строки:

C:\>Python script.py <train.txt> train.result.txt 
+0

Я пробовал, что train.result.txt успешно создан, но пуст! – Wahedsaw

+1

ОК, я проработал это. Ключ в том, что вам нужна пустая строка в конце вашего файла train.txt (и вам нужно вызвать его, как я сказал выше). Функция read_iter() в crfutils.py возвращает только итератор, если он достигает пустой строки. – Vicky

+0

(и когда я делаю это, я получаю результат точно так же, как тот, который вы задаете в вопросе) – Vicky

Смежные вопросы