بسمه تعالی
پروژه: بازیابی اطلاعات از متن
هدف پروژه آموزش برای استخراج کلمات کلیدی صحیح می باشد
مثال
کلمات ورودی یا به عبارتی x های ما
1. Computer 6. Computers 11.compute 16. computing
2. Engineer 7. Engine 12. Engineers 17. engineering
3. MATLAB 8.mfile 13.files 18.math
4. Electronic 9. electrical 14.electric 19.electricaly
5. IT 10. Information 15. Technology 20.Tech
یعنی 20 نورون به عنوان نورون ورودی داریم
کلمات کلیدی ما 5 تا هستند (پنج نورون)
و خروجی ما تنها یکی از این پنج نورون خواهد بود
به ازای 20 کلمه ورودی ایندکس گذاری صورت می گیرد
نورون های لایه پنهان کلمات کلیدی ما هستند
Computer / engineer/MATLAB/Electronic/IT
یعنی به ازای هریک از کلمات ریشه کامپیوتر ، کلمه کلیدی کامپیوتر را بر گرداند.
کد نوشته شده
clc
clear all
inp_query = fopen('keywords.txt','rb', 'n', 'UTF-8'
query = fgetl(inp_query);
input_file = fopen('keys.txt','rb', 'n', 'UTF-8'
q = strread(query, '%s', 'delimiter', '-' % INPUT
kword = 0;
kw = [];
remain=fscanf(input_file,'%c'
kw = strread(remain, '%s', 'delimiter', '-' ; % KeyWords
%--------------------------------------------------------------------------
p = zeros(5,20);
t = eye(5, 5);
for i=1:size(q, 1)
if (i==1 |i==2 | i==3 | i==4)
kword = 1;
p(kword,1)=1; p(kword,2)=1; p(kword,3)=1; p(kword,4)=1;
else
if(i==5 |i==6 | i==7 | i==8)
kword = 2;
p(kword,5)=1; p(kword,6)=1; p(kword,7)=1; p(kword,8)=1;
else
if (i==9 |i==10 | i==11 | i==12)
kword = 3;
p(kword,9)=1; p(kword,10)=1; p(kword,11)=1; p(kword,12)=1;
else
if (i==13 |i==14 | i==15 | i==16)
kword = 4;
p(kword,13)=1; p(kword,14)=1; p(kword,15)=1; p(kword,16)=1;
else
if (i==17 |i==18 | i==19 | i==20)
kword = 5;
p(kword,17)=1; p(kword,18)=1; p(kword,19)=1; p(kword,20)=1;
end
end
end
end
end
% if(kword ~= 0)
%-----------------------------------------------------------------
% Back Propagation
%-----------------------------------------------------------------
sse_rec = [];
sse = 10; % Emax
eta = 1;
alpha = 0.5; % Initial Learning Factor = c
p = [p ones(5,1)];
num_inp = size(p,2);
num_hid = 5;
num_out = 5;
w1 = 0.5*(1-2*rand(num_inp,num_hid-1));
w2 = 0.5*(1-2*rand(num_hid,num_out));
dw1_last = zeros(size(w1');
dw2_last = zeros(size(w2');
epoch = 0;
while epoch < 1000
Y = p * w1;
y = 1./(1+exp( - Y));
y = [ y ones(size(y,1),1) ];
Z = y' * w2;
z = 1./(1+exp( - Z));
output_error = 0.5*(t - z)^2;
sse = trace(output_error'*output_error);
sse_rec = [sse_rec sse];
deltas_out = z*(1-z)*(t-z);
deltas_hid = (t-z)*z*(1-z)*w2 .* y .* (1-y);
deltas_hid(:,size(deltas_hid,2)) = [];
dw1 =(eta * deltas_hid * p) + (dw1_last *alpha);
dw2 = eta * deltas_out * y + alpha * dw2_last;
w1 = w1 + dw1';
w2 = w2 + dw2';
dw1_last = dw1';
dw2_last = dw2';
epoch = epoch + 1;
disp([' Epoch ' num2str(epoch) ' SSE ' num2str(sse)]);
end
end
figure(1);
plot(sse_rec); xlabel('Epochs' ylabel('Sum squared error (SSE)'
%--------------------------------------------------------------------------
% fetch document
%--------------------------------------------------------------------------
% p = zeros(1, 20);
% p(1, kword) = 1;
% p = [p ones(size(p,1),1) ];
% winp = w1*p';
% hact = 1 ./(1+exp(-winp));
% hidwb = [hact ones(size(hact,1),1)];
% wout = hidwb * w2;
% oact = 1 ./(1+exp(-wout));
% num2str(round(oact * 5));
% str_addr = ['DS/',num2str(round(oact * 5)),'.txt'];
% % obj = xml2struct(['DS/',num2str(round(oact * 50)),'.xml']);
% ans_file = fopen(str_addr, 'r'
% fid = fopen('output.txt', 'w', 'n', 'UTF-8'
% while ~feof(ans_file)
% line=fgetl(ans_file);
% fprintf(fid, '%s', line);
% end
%
% fclose(fid);
% else
% disp('Error : Wrong Query!!!'
% %--------------TEST
% P=ones(25,25);
% P(19,14)=0;
% P(2,2)=0;
%+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
%test
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
% Y = P * w1;
% y = 1./(1+exp( - Y));
% y = [ y ones(size(y,1),1) ];
% Z = y * w2;
% z = 1./(1+exp( - Z));
% if (z>0)
%
% fprintf('YOUR INPUT IS "computer"'
% else
%
% fprintf('YOUR INPUT IS NO "computer"'
% end
%
%
پروژه: بازیابی اطلاعات از متن
هدف پروژه آموزش برای استخراج کلمات کلیدی صحیح می باشد
مثال
کلمات ورودی یا به عبارتی x های ما
1. Computer 6. Computers 11.compute 16. computing
2. Engineer 7. Engine 12. Engineers 17. engineering
3. MATLAB 8.mfile 13.files 18.math
4. Electronic 9. electrical 14.electric 19.electricaly
5. IT 10. Information 15. Technology 20.Tech
یعنی 20 نورون به عنوان نورون ورودی داریم
کلمات کلیدی ما 5 تا هستند (پنج نورون)
و خروجی ما تنها یکی از این پنج نورون خواهد بود
به ازای 20 کلمه ورودی ایندکس گذاری صورت می گیرد
نورون های لایه پنهان کلمات کلیدی ما هستند
Computer / engineer/MATLAB/Electronic/IT
یعنی به ازای هریک از کلمات ریشه کامپیوتر ، کلمه کلیدی کامپیوتر را بر گرداند.
کد نوشته شده
clc
clear all
inp_query = fopen('keywords.txt','rb', 'n', 'UTF-8'
query = fgetl(inp_query);
input_file = fopen('keys.txt','rb', 'n', 'UTF-8'
q = strread(query, '%s', 'delimiter', '-' % INPUT
kword = 0;
kw = [];
remain=fscanf(input_file,'%c'
kw = strread(remain, '%s', 'delimiter', '-' ; % KeyWords
%--------------------------------------------------------------------------
p = zeros(5,20);
t = eye(5, 5);
for i=1:size(q, 1)
if (i==1 |i==2 | i==3 | i==4)
kword = 1;
p(kword,1)=1; p(kword,2)=1; p(kword,3)=1; p(kword,4)=1;
else
if(i==5 |i==6 | i==7 | i==8)
kword = 2;
p(kword,5)=1; p(kword,6)=1; p(kword,7)=1; p(kword,8)=1;
else
if (i==9 |i==10 | i==11 | i==12)
kword = 3;
p(kword,9)=1; p(kword,10)=1; p(kword,11)=1; p(kword,12)=1;
else
if (i==13 |i==14 | i==15 | i==16)
kword = 4;
p(kword,13)=1; p(kword,14)=1; p(kword,15)=1; p(kword,16)=1;
else
if (i==17 |i==18 | i==19 | i==20)
kword = 5;
p(kword,17)=1; p(kword,18)=1; p(kword,19)=1; p(kword,20)=1;
end
end
end
end
end
% if(kword ~= 0)
%-----------------------------------------------------------------
% Back Propagation
%-----------------------------------------------------------------
sse_rec = [];
sse = 10; % Emax
eta = 1;
alpha = 0.5; % Initial Learning Factor = c
p = [p ones(5,1)];
num_inp = size(p,2);
num_hid = 5;
num_out = 5;
w1 = 0.5*(1-2*rand(num_inp,num_hid-1));
w2 = 0.5*(1-2*rand(num_hid,num_out));
dw1_last = zeros(size(w1');
dw2_last = zeros(size(w2');
epoch = 0;
while epoch < 1000
Y = p * w1;
y = 1./(1+exp( - Y));
y = [ y ones(size(y,1),1) ];
Z = y' * w2;
z = 1./(1+exp( - Z));
output_error = 0.5*(t - z)^2;
sse = trace(output_error'*output_error);
sse_rec = [sse_rec sse];
deltas_out = z*(1-z)*(t-z);
deltas_hid = (t-z)*z*(1-z)*w2 .* y .* (1-y);
deltas_hid(:,size(deltas_hid,2)) = [];
dw1 =(eta * deltas_hid * p) + (dw1_last *alpha);
dw2 = eta * deltas_out * y + alpha * dw2_last;
w1 = w1 + dw1';
w2 = w2 + dw2';
dw1_last = dw1';
dw2_last = dw2';
epoch = epoch + 1;
disp([' Epoch ' num2str(epoch) ' SSE ' num2str(sse)]);
end
end
figure(1);
plot(sse_rec); xlabel('Epochs' ylabel('Sum squared error (SSE)'
%--------------------------------------------------------------------------
% fetch document
%--------------------------------------------------------------------------
% p = zeros(1, 20);
% p(1, kword) = 1;
% p = [p ones(size(p,1),1) ];
% winp = w1*p';
% hact = 1 ./(1+exp(-winp));
% hidwb = [hact ones(size(hact,1),1)];
% wout = hidwb * w2;
% oact = 1 ./(1+exp(-wout));
% num2str(round(oact * 5));
% str_addr = ['DS/',num2str(round(oact * 5)),'.txt'];
% % obj = xml2struct(['DS/',num2str(round(oact * 50)),'.xml']);
% ans_file = fopen(str_addr, 'r'
% fid = fopen('output.txt', 'w', 'n', 'UTF-8'
% while ~feof(ans_file)
% line=fgetl(ans_file);
% fprintf(fid, '%s', line);
% end
%
% fclose(fid);
% else
% disp('Error : Wrong Query!!!'
% %--------------TEST
% P=ones(25,25);
% P(19,14)=0;
% P(2,2)=0;
%+++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
%test
%^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
% Y = P * w1;
% y = 1./(1+exp( - Y));
% y = [ y ones(size(y,1),1) ];
% Z = y * w2;
% z = 1./(1+exp( - Z));
% if (z>0)
%
% fprintf('YOUR INPUT IS "computer"'
% else
%
% fprintf('YOUR INPUT IS NO "computer"'
% end
%
%
دیدگاه