누군가가 매일 이와 같은 메일을 보낸다고 상상해보십시오.
예 1 :
"My fuel consumption yesterday was XXX liters, My distance driven is YYY kilometers/miles, My average speed yesterday ZZZ kilometers/miles per hour "
예 2 :
"The engine used XXX liters of fuel yesterday, The car drove YYY kilometers yesterday (+3 kilometers after 12 o'clock, but this was technically today), The car's mean speed yesterday is ZZZ kilometers per hour"
메일에 더 많은 값, 최대 5 개의 값이있을 수 있습니다 (이 예에서는 3 개).
작업은
XXX,YYY and ZZZ
를 얻는 것입니다
메일에서 값이 많을수록 더 많은 값이 표시됩니다. 물론 메일은 수동으로 입력되므로 각 메일은 다른 종류입니다.
이것은 어떻게 하는가? 모든 (심각한) 아이디어는 환영합니다. 아래에 아이디어를 주겠습니다 :
Keras(또는 다른) 신경망이 그 일을 할 수도 있다고 생각했습니다.
keras.preprocessing.text.one_hot()
를 사용하여 각 메일을 numpy 벡터로 표시하려고했습니다.
다음과 같은 구조로 신경망을 훈련시킵니다 :
- EmbeddingLayer
- 1DConvLayer with Relu activation
- MaxpoolLayer
- DropoutLayer
- FlattenLayer
- DenseLayer with Relu activation
- DropoutLayer
- Dense Layer with Linear activation
위 예제의 경우 각 뉴런이 값을 예측해야하는 3 개의 출력 뉴런이 있습니다. 예를 들어 첫 번째 출력 뉴런은 XXX, 두 번째 뉴런 YYY 등을 출력해야합니다.
Adam 최적화 프로그램과 MSE를 손실로 사용하면 이는 나쁜 일입니다. MSE는 다소 큰 가치로 수렴하는 것으로 보이며 예측은 완전히 벗어났습니다.
다른 구조를 사용해야합니까? 다음 중 가장 성공한 구조는 무엇입니까?
완전히 다른 출력을 사용해야합니까? 예를 들어, 신경망은 "6 번째 단어는 연료 소비"입니다.
Neural 네트워크없이 전혀 다른 접근법을 사용해야합니까? 그러면 어떻게 되나요?
신경망의 출력이있는 메시지의 예. 메일 메시지 :
- Cargo quantity, B/L mt: 0
- ME Fuel consumption mt: 8,9
- Total fuel consumption mt: 15
- Draught m: 6,65
- Date: 2018-07-04 07:00
- Timezone: 2018-07-04 07:00 W. Europe Standard Time
- ROB MGO: 510,3
- Distance, 127
신경망 출력 :
- Date: 2018-09-12T15:02:28
- Timezone: 545.405
- ROB MGO: -1876.67
- Cargo: 23714.6
- Draught: 0.394458
- Cargo offload: 9.97439e+06
- Cargo load: 9.87113e+06
원하는 결과 :
- Date: 2018-04-07T07:00:00
- Timezone: +1
- ROB MGO: 510.3
- Cargo: 0
- Draught: 6.65
- Cargo offload: 99999999
- Cargo load: 99999999
시간대는 UTC와의 차이를 나타냅니다.이 경우 +1,화물 오프로드 및화물로드가 메일에 존재하지 않으므로 "존재하지 않음"을 의미하는 99999999를 출력해야합니다. 날짜는 먼저 타임 스탬프로 변환되므로 신경망은 타임 스탬프를 출력합니다.
- 답변 # 1
- python : Stateful RNN을 맞출 때 차원 오류
- python : 매우 우수한 정확도에도 불구하고 매우 높은 손실 값
- python : 다중 클래스 분류 tensorflow 기반 모델에서 사용자에게 열렬한 출력을 얻는 방법
- python : 경고:tensorflow:입력에 데이터가 부족합니다. 훈련 방해
- python : 이전 Tensorflow에서 새로운 Tensorflow로 훈련된 모델을 로드할 때 더 많은 레이어 가중치 로드
- python : Keras.losses와 Keras.metrics의 대문자 버전과 소문자 버전의 차이점은 무엇입니까?
- python : 파이썬에서 이 속성 오류를 해결하는 방법은 무엇입니까?
- python : 가져오기 오류: tensorflow.keras.layers에서 CuDNNLSTM을 가져올 수 없습니다.
- keras : 비연속 데이터가 있는 시계열 예측 LSTM
- python : ValueError: "sequential" 레이어의 입력 0이 레이어와 호환되지 않습니다: 예상된 모양=(없음, 128, 128, 3), 발견된 모양=(32, 128, 3)
다음 단계를 수행하면됩니다 :
<올>"이름"및패턴"이라는 2 개의 열이있는 Excel 파일을 만듭니다. 여기서"이름 "은 캡처 그룹 (Draught/Cargo 오프로드)하고 "패턴"은 정규식을 가져 와서 캡처해야합니다.
파이썬에서이 명령을 아래 명령으로 읽으십시오 :
와이즈 비즈 와이즈 비즈이
와이즈 비를 지나치다 그리고
와이즈 비즈 와이즈 비즈import pandas as pd df = pd.read_excel('\\Regex.xlsx', sheet_name=0)
원하는 출력을 얻으려면 아래의 기능을 사용하여 이메일을 보내십시오.df
캡처 그룹의 사전과 해당 값이됩니다. 메일에없는 값은 단순히 비어 있습니다. 당신은정규식 작업을 보려면 아래 링크를 참조하십시오. https://regex101.com/r/IppEq0/1
이제 당신의 캡처 그룹을 위해 더 많은 정규 표현식을 작성하고 엑셀에 넣어야합니다
def parse_patterns_regex(df): pattern = df['pattern'].tolist() pattern_name = df['name'].tolist() pattern_dict = dict(zip(pattern_name, pattern)) return pattern_dict