text:
\section{Introduction}
\label{sec:intro}

These guidelines include complete descriptions of the fonts, spacing, and
related information for producing your proceedings manuscripts. Please follow
them and if you have any questions, direct them to Conference Management
Services, Inc.: Phone +1-979-846-6800 or email
to \\\texttt{icassp2019@cmsworkshops.com}.

\section{Formatting your paper}
\label{sec:format}

All printed material, including text, illustrations, and charts, must be kept
within a print area of 7 inches (178 mm) wide by 9 inches (229 mm) high. Do
not write or print anything outside the print area. The top margin must be 1
inch (25 mm), except for the title page, and the left margin must be 0.75 inch
(19 mm).  All {\it text} must be in a two-column format. Columns are to be 3.39
inches (86 mm) wide, with a 0.24 inch (6 mm) space between them. Text must be
fully justified.

\section{PAGE TITLE SECTION}
\label{sec:pagestyle}

The paper title (on the first page) should begin 1.38 inches (35 mm) from the
top edge of the page, centered, completely capitalized, and in Times 14-point,
boldface type.  The authors' name(s) and affiliation(s) appear below the title
in capital and lower case letters.  Papers with multiple authors and
affiliations may require two or more lines for this information. Please note
that papers should not be submitted blind; include the authors' names on the
PDF.

\section{TYPE-STYLE AND FONTS}
\label{sec:typestyle}

To achieve the best rendering both in printed proceedings and electronic proceedings, we
strongly encourage you to use Times-Roman font.  In addition, this will give
the proceedings a more uniform look.  Use a font that is no smaller than nine
point type throughout the paper, including figure captions.

In nine point type font, capital letters are 2 mm high.  {\bf If you use the
smallest point size, there should be no more than 3.2 lines/cm (8 lines/inch)
vertically.}  This is a minimum spacing; 2.75 lines/cm (7 lines/inch) will make
the paper much more readable.  Larger type sizes require correspondingly larger
vertical spacing.  Please do not double-space your paper.  TrueType or
Postscript Type 1 fonts are preferred.

The first paragraph in each section should not be indented, but all the
following paragraphs within the section should be indented as these paragraphs
demonstrate.

\section{MAJOR HEADINGS}
\label{sec:majhead}

Major headings, for example, "1. Introduction", should appear in all capital
letters, bold face if possible, centered in the column, with one blank line
before, and one blank line after. Use a period (".") after the heading number,
not a colon.

\subsection{Subheadings}
\label{ssec:subhead}

Subheadings should appear in lower case (initial word capitalized) in
boldface.  They should start at the left margin on a separate line.

\subsubsection{Sub-subheadings}
\label{sssec:subsubhead}

Sub-subheadings, as in this paragraph, are discouraged. However, if you
must use them, they should appear in lower case (initial word
capitalized) and start at the left margin on a separate line, with paragraph
text beginning on the following line.  They should be in italics.

\section{PRINTING YOUR PAPER}
\label{sec:print}

Print your properly formatted text on high-quality, 8.5 x 11-inch white printer
paper. A4 paper is also acceptable, but please leave the extra 0.5 inch (12 mm)
empty at the BOTTOM of the page and follow the top and left margins as
specified.  If the last page of your paper is only partially filled, arrange
the columns so that they are evenly balanced if possible, rather than having
one long column.

In LaTeX, to start a new column (but not a new page) and help balance the
last-page column lengths, you can use the command ``$\backslash$pagebreak'' as
demonstrated on this page (see the LaTeX source below).

\section{PAGE NUMBERING}
\label{sec:page}

Please do {\bf not} paginate your paper.  Page numbers, session numbers, and
conference identification will be inserted when the paper is included in the
proceedings.

\section{ILLUSTRATIONS, GRAPHS, AND PHOTOGRAPHS}
\label{sec:illust}

Illustrations must appear within the designated margins.  They may span the two
columns.  If possible, position illustrations at the top of columns, rather
than in the middle or at the bottom.  Caption and number every illustration.
All halftone illustrations must be clear black and white prints.  Colors may be
used, but they should be selected so as to be readable when printed on a
black-only printer.

Since there are many ways, often incompatible, of including images (e.g., with
experimental results) in a LaTeX document, below is an example of how to do
this \cite{Lamp86}.

\section{FOOTNOTES}
\label{sec:foot}

Use footnotes sparingly (or not at all!) and place them at the bottom of the
column on the page on which they are referenced. Use Times 9-point type,
single-spaced. To help your readers, avoid using footnotes altogether and
include necessary peripheral observations in the text (within parentheses, if
you prefer, as in this sentence).

\begin{figure}[htb]

\begin{minipage}[b]{1.0\linewidth}
  \centering
  \centerline{\includegraphics[width=8.5cm]{image1}}
  \centerline{(a) Result 1}\medskip
\end{minipage}
\begin{minipage}[b]{.48\linewidth}
  \centering
  \centerline{\includegraphics[width=4.0cm]{image3}}
  \centerline{(b) Results 3}\medskip
\end{minipage}
\hfill
\begin{minipage}[b]{0.48\linewidth}
  \centering
  \centerline{\includegraphics[width=4.0cm]{image4}}
  \centerline{(c) Result 4}\medskip
\end{minipage}
\caption{Example of placing a figure with experimental results.}
\label{fig:res}
\end{figure}

\section{COPYRIGHT FORMS}
\label{sec:copyright}

You must submit your fully completed, signed IEEE electronic copyright release
form when you submit your paper. We {\bf must} have this form before your paper
can be published in the proceedings.

\section{RELATION TO PRIOR WORK}
\label{sec:prior}

The text of the paper should contain discussions on how the paper's
contributions are related to prior work in the field. It is important
to put new work in  context, to give credit to foundational work, and
to provide details associated with the previous work that have appeared
in the literature. This discussion may be a separate, numbered section
or it may appear elsewhere in the body of the manuscript, but it must
be present.

You should differentiate what is new and how your work expands on
or takes a different path from the prior studies. An example might
read something to the effect: "The work presented here has focused
on the formulation of the ABC algorithm, which takes advantage of
non-uniform time-frequency domain analysis of data. The work by
Smith and Cohen \cite{Lamp86} considers only fixed time-domain analysis and
the work by Jones et al \cite{C2} takes a different approach based on
fixed frequency partitioning. While the present study is related
to recent approaches in time-frequency analysis [3-5], it capitalizes
on a new feature space, which was not considered in these earlier
studies."

\vfill\pagebreak

\section{REFERENCES}
\label{sec:refs}

List and number all bibliographical references at the end of the
paper. The references can be numbered in alphabetic order or in
order of appearance in the document. When referring to them in
the text, type the corresponding reference number in square
brackets as shown at the end of this sentence \cite{C2}. An
additional final page (the fifth page, in most cases) is
allowed, but must contain only references to the prior
literature.

\bibliographystyle{IEEEbib}

\section{Introduction}
\label{sec:intro}

Contextual biasing is a challenging task for end-to-end (E2E) automatic speech recognition (ASR) systems \cite{li2022recent}, which improves the recognition performance by biasing the model to a specific domain phrase list including a user's contact names, songs, location, and other contextual information.
Prior works for contextual biasing of E2E ASR system can be classified into three categories.
The first method is to represent the biasing phrases as a finite state transducer (FST) and incorporate it into the beam-search decoding framework of E2E model \cite{OTF_rescore2, OTF_rescore3, CLAS, OTF_rescore4, le2021deep}.
The second method is to directly incorporate the contextual information into the E2E model with a bias encoder \cite{CLAS, jain2020contextual, phoebe, trie_deep_biasing, instant_one_shot, tree_constrained}.
To deal with the scalability issues \cite{CLAS} when with large biasing phrase list and further improve the biasing performance, the contextual spelling correction method is also proposed by biasing the recognition hypothesis with an efficient and small contextual spelling correction (CSC) model \cite{CSC, wang2022towards}, which acts as a post processing module.
Compared to the first two categories, due to the post processing nature, CSC can pre-select biasing phrases with a filter mechanism, which reduces the effective number of biasing phrases to avoid attention diffusion.

Autoregressive contextual spelling correction (CSCv1) \cite{CSC} on top of ASR model as a post processing method has shown improvement on phrase biasing problems, which incorporates the contextual information into an autoregressive (AR) spelling correction model \cite{SC_1,SC_4}, but the efficiency is poor due to its autoregressive nature.
\cite{wang2022towards} (CSCv2) introduces a new non-autoregressive (NAR) contextual spelling correction model and incorporates contextual information into the decoder by attending to the contextual hidden representations from the bias encoder with an attention mechanism \cite{Attention-bahdanau2014}, as shown in Figure \ref{fig:csc_v3_model}.
In CSCv2, the decoder directly takes hidden states from text encoder as input, attends to the bias phrase hidden representations, and outputs a position-wise classification (CLS) tag $cls$ and context index $cind$ for each input token. The CLS tag uses "BILO" representation where "B", "I", and "L" represent the beginning, inside and last position of a context phrase, "O" represents a general position outside of a context phrase; $cind$ is the expected index of the ground-truth context phrase in the bias list for each position. The final correction output can then be determined by $cls$ and $cind$. CSCv2 greatly improves the inference efficiency especially for low-end devices or resource limited systems but has similar biasing performance like its AR counterparts.

\begin{figure*}[h]
  \centering
  \includegraphics[width=1.0\linewidth]{csc_models.pdf}
  \caption{Model structure of CSCv2 and CSCv3. CSCv3 model leverages acoustic information with external acoustic attention. We propose two architectures: CSCv3-EA incorporates acoustic information in text encoder, while CSCv3-DA incorporates acoustic information in decoder.}
  \label{fig:csc_v3_model}
\end{figure*}

However, both CSCv1 and CSCv2 may fail on the cases that hypotheses are totally irrelevant to the ground truth context phrase or on the cases that have more biasing phrases with similar pronunciation but dissimilar written format. On the other hand, although \cite{CSC, wang2022towards} use filter mechanisms for large context list to improve inference efficiency, its training hypotheses-reference pairs prepared with synthesized\cite{liu2021delightfultts} or human speech still have similarity gap in real scenario and it's not easy for a CSC model to distinguish similar phrases with similar pronunciation or written format from limited hypothesis information only.

Acoustics information has played an important role for ASR post processing besides text hypotheses in recent research \cite{ye2022have,hu2022transducer,le2022deliberation,peyser2020improving}. \cite{hu2020deliberation,hu2021transformer} combine both acoustics and first-pass text hypotheses for second-pass decoding, with an RNN-T or transformer model generating the first-pass hypotheses, then a deliberation model attending to both acoustics and first-pass hypotheses for a second-pass decoding. This shows improvement over text hypotheses only post processing model and inspires us to take acoustic information to improve CSC. The intuition is that if the text hypotheses can't provide useful information for bias correction, acoustic information will help to complement the missing context.

In this paper, we proposed a new CSCv3 model, which combines both acoustic and text hypothesis for contextual spelling correction. Specifically, we introduce the designs as follows.
\begin{itemize}[leftmargin=*]
\item we propose to combine acoustics and first-pass text hypotheses for second-pass contextual spelling correction with biasing phrases as input. The proposed CSCv3 model has a similar structure as CSCv2 \cite{wang2022towards} except for the additional acoustic attention: a text encoder generates hidden vectors of the first-pass hypothesis from ASR model conditioned on acoustics hidden from ASR audio encoder output by an acoustic attention, a bias encoder generates contextual embeddings from biasing phrases, then a transformer decoder attends to both hypothesis and contexts for a second-pass decoding to generate phrase similarity and index for each encoder input position.
\item we use data augmentation for the context list construction during training with more similar pronunciation phrases or irrelevant phrases to improve the robustness of inference.
\end{itemize}

Our experiments show that the proposed method achieves as much as 20.3\% relative name recall gain improvement compared to the baseline end-to-end ASR+Biasing system, and significantly outperforms the previous CSCv2 model.

\section{Methodology}
\label{sec:methodology}

\subsection{Model Architecture}

As shown in Figure \ref{fig:csc_v3_model}, the proposed CSCv3 model consists of 4 components: text encoder, bias encoder, acoustics adapter, and decoder.
The text encoder takes ASR hypothesis as input and encodes text information into hidden states.
The bias encoder converts the biasing phrases into phrase level embeddings, which adopts a multi-layer transformer encoder structure as in CSCv2.
The decoder uses the NAR (non-autoregressive) infrastructure which directly takes the encoder outputs as input and outputs a position-wise classification (CLS) tag $cls$ and context index tag $cind$ for each input token with the same definition described in Section \ref{sec:intro}

\subsubsection{External acoustic attention}

The acoustic encoder hidden of ASR model is adapted by the acoustic adapter in CSCv3 and then fed into CSC model with external attention. The acoustic adapter consists of two linear layers with ReLU activation function and dropout in between.

We explore two different structures to leverage the acoustic information, as shown in Figure \ref{fig:csc_v3_model}. In CSCv3-EA, the acoustic information is incorporated into the text encoder by a cross attention which is added between the self-attention and feedforward module in each encoder layer, the decoder follows the same transformer decoder structure as in CSCv2, with self-attention, bias cross attention, and feedforward modules in each layer. For CSCv3-DA, the acoustic information is incorporated into the decoder by cross attention which is added between the self-attention and bias attention module in each decoder layer, while the text encoder keeps the same structure as in CSCv2. The comparison results between the two structures is shown in Section \ref{sec:results}.

Since the input audio feature sequence is typically long, we define an audio feature mask which masks audio features that are far from the position that corresponds to the current word piece token. For each token, we only attend to audio features corresponding to the surrounding $S_k$ words of this token. $S_k$ is randomly sampled from uniform distribution $[1, S_{kmax}]$, where $S_{kmax}$ is a pre-defined parameter.

\subsubsection{Semantic aware data augmentation}
\label{sec:anti}

The training pairs of CSCv3 are constructed randomly with the offline prepared data during training. To generate the biasing phrase list for each utterance, CSCv2 randomly samples $N_b$ biasing phrases from an existing large biasing phrase list besides the reference context phrase. $N_b$ is randomly sampled from uniform distribution $[1, N_{bmax}]$, where $N_{bmax}$ is the pre-defined max biasing phrase list size, which doesn't consider irrelevant hypotheses or pronunciation similar phrases.
As shown in the following table, CSCv3 improves the sampling strategy with the prepared reference-hypotheses pairs by two ways:

(1) Except for the raw ASR hypothesis of each utterance, we also randomly replace hypothesis of the context phrases with the prepared reference-hypotheses pairs, which improves the data varieties.

(2) To deal with anti-context cases where all biasing phrases are not present in the utterance, we randomly add two types of training data with probability $P_{anti}$: for the first type, the ground-truth context phrase is simply removed from the bias list, and the corresponding model output is also modified as non-context case; for the second type, we not only remove the ground-truth context phrase, but also add similar phrases into the biasing phrase list. These similar phrases come from the hypotheses in the prepared reference-hypotheses pairs.

\begin{table}[h]
  \vspace{-1.0em}
  \label{tab:training_pair_example}
  \centering
  \resizebox{0.85\linewidth}{!}{%
  \begin{tabular}{ll}
    \toprule
    Reference & \textit{Call \textcolor{blue}{John} at ten a.m.} \\
    ASR hypothesis & \textit{Call \textcolor{blue}{Joe} at ten a.m.} \\
    bias list & \{\textit{Sam}, \textit{John}, \textit{Dong}, ...\} \\
    Context ref-hyp pair & \textit{John} -- \{\textit{Jane}, \textit{Jon}, \textit{June}, \textit{Joe}\}  \\
    \midrule
    \multicolumn{2}{l}{(1) Replace hypothesis with ref-hyp pair:} \\
    Hyp $x$ & \textit{Call \textcolor{blue}{Jane} at ten a.m.} \\
    Ref $y$ & \textit{Call \textcolor{blue}{John} at ten a.m.} \\
    \midrule
    \multicolumn{2}{l}{(2.1) Remove ground-truth context phrase:} \\
    Hyp $x$ & \textit{Call \textcolor{blue}{Joe} at ten a.m.} \\
    bias list & \{\textit{Sam}, \sout{\textit{John}}, \textit{Dong}, ...\} \\
    Ref $y$ & \textit{Call \textcolor{blue}{Joe} at ten a.m.} \\
    \midrule
    \multicolumn{2}{l}{(2.2) Add similar phrases into bias list:} \\
    Hyp $x$ & \textit{Call \textcolor{blue}{Joe} at ten a.m.} \\
    bias list & \{\textit{Sam}, \sout{\textit{John}}, \textit{Dong}, \textit{Jane}, \textit{Jon}, ...\} \\
    Ref $y$ & \textit{Call \textcolor{blue}{Joe} at ten a.m.} \\
    \bottomrule
  \end{tabular}}
\vspace{-2.0em}
\end{table}

\subsubsection{Fast partial adaptation}

CSCv3 leverages both acoustics and text hypotheses information for better context biasing. Training from scratch is time consuming, for quick adaptation, we train the CSCv3 model based on a baseline CSCv2 model and only update new components in CSCv3, which includes audio adapter and acoustic attention layers. This strategy "inserts" acoustic information into the raw CSCv2 model and we will show its effectiveness in Section \ref{sec:results}. We also use a parameter $r$ to incorporate the acoustic information into the model. In each encoder layer of CSCv3-EA and decoder layer of CSCv3-DA, the data flow of acoustic attention layer can be expressed as:

\begin{equation}
x = x_0 + r \cdot {\rm dropout}({\rm AcousticAtt}({\rm norm}(x_0))),
\end{equation}
where $x_0$ and $x$ are the input and output of acoustic attention layer. $r$ is randomly sampled from a uniform distribution $[0.0, 1.0]$, which represents the incorporation ratio of acoustic information in the model.

\subsection{Training Optimization}

\subsubsection{Loss Objectives}

Like CSCv2, the loss function is the sum of CLS tag loss and context index loss:
\begin{equation}
L = H(\widehat{y_{cls}}, y_{cls}) + H(\widehat{y_{cind}}, y_{cind}).
\end{equation}

We also use teacher-student learning \cite{li2014learning, hinton2015distilling} to make the model smaller and more efficient.

\subsubsection{Data processing}

To generate the training data for CSCv3, we first decode the E2E ASR model for utterances with person names which are extracted from ASR model training set. The top-one hypothesis, audio encoder outputs, and forced alignment of the hypothesis and audio are needed for training. Then we locate and tag the positions of person names in each transcript, which is used to construct reference outputs during training.

Despite the raw ASR hypothesis, we also used a text to speech (TTS) system to generate synthetic audios for the person names. These synthetic audios are then fed into the ASR model to get hypotheses with more varieties. In this way we construct a set of reference-hypotheses pairs for the person names.

\subsection{Inference}

Like CSCv2, we use an edit distance-based relevance ranker (rRanker) to pre-select biasing phrases from the raw biasing phrase list and deal with the possible scalability issue:
\begin{equation}
W_r^j = -\frac{\min_{i}({\rm edit\_distance}(c_j, e_i))}{{\rm len}(c_j)},
\end{equation}
where $e_i$ is the segment cut off from input ASR hypothesis with the same length of the context phrase $c_j$ from the $i$-th word. The final relevance ranker weight is the minimum value of these edit distance normalized by the length of $c_j$.

The E2E ASR model decodes in a streaming way, we use the intermediate results and their corresponding decoding positions to estimate the rough alignment between audio and hypothesis. This alignment is then converted to the audio feature mask as model input.

\section{Experiment}
\label{sec:experiment}

\subsection{Data sets}

\noindent\textbf{Training set} We use a small set and a large set as the training data, which include 0.2 thousand (K) hours and 17K hours of Microsoft in-house en-US data respectively. We do a full decoding of the training data with the baseline E2E ASR model to get hypothesis and audio encoder hidden for CSCv3 training.

\noindent\textbf{Test set} The test set consists of 12 Microsoft Teams meetings. Each meeting corresponds to a name list which consists of 600 person names, this list is expanded to a larger bias list with around 1500 phrases during inference. To evaluate the model performance on anti-context cases where the ground-truth name does not appear in the bias list, we also prepared 4 sets of bias lists with $25\%$, $50\%$, $75\%$, and $100\%$ name coverage for each meeting. All the data is anonymized with personally identifiable information removed.

\subsection{Model settings}

\noindent\textbf{ASR model} The baseline ASR model is a Conformer-Transducer (C-T) ~\cite{gulati2020conformer} model with the efficient low-latency implementation \cite{chen2020developing}, trained with 64K hours Microsoft anonymized data. The dimension of audio encoder output is 512 and we only use top-1 text hypothesis for CSCv3 input.

\noindent\textbf{Teacher model} For the teacher model, each transformer layer contains a multihead-attention with 8 heads, and a 2048-dim feedforward layer. The text encoder, bias encoder and decoder all consist of 6 transformer blocks. The acoustic adapter consists of a 2048-dim feedforward layer followed by layer normalization. For text encoder of CSCv3-EA, an acoustic attention layer with 8 heads is inserted after the self-attention layer. While for the decoder of CSCv3-DA, an acoustic attention layer with 8 heads is sandwiched between the self-attention layer and biasing cross attention layer in each decoder block.

\noindent\textbf{Student model} For the student model, the text encoder, bias encoder, and decoder all consist of 3 transformer blocks. The embedding dimension is set to be 192, all the multi-head attentions have 4 heads, and dimension of feedforward layers is 768. The feedforward layer in the audio feature adapter is composed of a 512-dimension and a 192-dimension linear layer.

\section{\uppercase{Results}}
\label{sec:results}

\begin{table*}[htb]
  \caption{Model performance with different bias list name coverage}
  \label{tab:model_perf}
  \centering
  \begin{tabular}{lllllllll}
    \toprule
    \multirow{2}{*}{Model}  & \multicolumn{2}{c}{25\% Coverage}  & \multicolumn{2}{c}{50\% Coverage} & \multicolumn{2}{c}{75\% Coverage} & \multicolumn{2}{c}{100\% Coverage}   \\
    \cmidrule(r){2-3}\cmidrule(r){4-5}\cmidrule(r){6-7}\cmidrule(r){8-9}
     & \multicolumn{1}{c}{Recall} & \multicolumn{1}{c}{WER} & \multicolumn{1}{c}{Recall} & \multicolumn{1}{c}{WER} & \multicolumn{1}{c}{Recall} & \multicolumn{1}{c}{WER} & \multicolumn{1}{c}{Recall} & \multicolumn{1}{c}{WER}   \\
    \midrule
    C-T      & $50.2$ & $12.5$ & $50.2$ & $12.5$ & $50.2$ & $12.5$ & $50.2$ & $12.5$   \\
    \midrule
    C-T+Biasing      & $58.0$ & $12.6$ & $59.0$ & $12.6$ & $61.4$ & $12.6$ & $64.1$ & $12.6$   \\
    \midrule
    \ +CSCv2      & $60.4$ & $12.7$ & $63.7$ & $12.6$ & $70.3$ & $12.6$ & $75.1$ & $12.6$   \\
    \midrule
    \ +CSCv3-EA-S0-nAnti-r1.0      & $58.0$ & $12.8$ & $60.4$ & $12.7$ & $70.1$ & $12.7$ & $74.3$ & $12.7$   \\
    \midrule
    \ +CSCv3-EA-S0-nAnti-r0.1      & $61.0$ & $12.6$ & $64.1$ & $12.6$ & $70.3$ & $12.6$ & $75.1$ & $12.6$   \\
    \midrule
    \ +CSCv3-EA-S0     & $61.8$ & $12.7$ & $64.7$ & $12.7$ & $71.3$ & $12.6$ & $75.3$ & $12.6$   \\
    \midrule
    \ +CSCv3-EA-full      & $61.8$ & $12.8$ & $64.9$ & $12.8$ & $72.3$ & $12.8$ & $76.9$ & $12.7$   \\
    \midrule
    \ \textbf{+CSCv3-EA}      & \textbf{62.7} & $12.7$ & \textbf{65.9} & $12.7$ & \textbf{72.7} & $12.7$ & \textbf{77.1} & $12.6$   \\
    \midrule
    \ +CSCv3-DA      & $62.7$ & $12.7$ & $64.1$ & $12.7$ & $71.3$ & $12.7$ & $75.9$ & $12.7$   \\
    \midrule
    \ +CSCv3-EA-student      & $62.7$ & $12.7$ & $65.3$ & $12.7$ & $72.3$ & $12.6$ & $77.7$ & $12.6$   \\
    \bottomrule
  \end{tabular}
\end{table*}

\noindent\textbf{Baseline}
We use a C-T model as the baseline, and the C-T model with FST biasing \cite{OTF_rescore4} which uses the same biasing phrase list as a strong baseline (C-T+Biasing). In Table \ref{tab:model_perf}, we compare the name recall and WER of the models with different bias list name coverage. Where $s\%$ name coverage means there are $s\%$ of the ground truth names appear in the bias list while the rest are missing. We can see FST biasing has already achieved large name recall improvement compared to the C-T model.

\noindent\textbf{Data augmentation} It should be noted that CSCv3-EA-S0-nAnti-r0.1 and CSCv3-EA-S0-nAnti-r1.0 are the same model decoded with different parameters $r=0.1$ and $r=1.0$. It's trained with the small training set and without anti-context cases mentioned in Section \ref{sec:anti}. It shows that a small incorporation ratio of acoustic information ($r=0.1$) leads to better performance. When the acoustic information is fully incorporated ($r=1.0$), the model performance becomes worse. We have investigated the decoding results and found that when $r$ is large, the model becomes more "biasing" and anti-context related errors are more likely to appear. This condition is not preferred because we hope the model be more stable on such cases. However, when anti-context data augmentation is added, as shown in CSCv3-EA-S0 which is trained with the same small set, this problem is gone and we find whether to add incorporation ratio $r$ during training or inference does not influence the decoding results much, and the name recall is also improved. Which indicates that data augmentation leads to more stable results and better performance.

\noindent\textbf{External acoustic attention} CSCv3-EA-S0 shows that the model achieves name recall gain even with a small training set. CSCv3-EA is trained with the large training set, which shows significant performance improvement when the training set becomes larger compared to CSCv3-EA-S0. The comparison of CSCv3-EA and CSCv3-DA indicates that incorporating the acoustic information into the text encoder achieves larger performance improvement. We also fully trained a CSCv3-EA model with all parameters updated with the large training set, which is called CSCv3-EA-full model. We observe that CSCv3-EA-full does not perform as well as CSCv3-EA which is partially trained. One of the reasons is that CSCv3-EA can still benefit from the baseline CSCv2 model which was trained with richer text-based data; another reason is that the current training set lacks general utterances without person names, which makes the model more biasing. It should be noted that CSCv2 shows limited improvement when the bias list name coverage is small (e.g., $25\%$ and $50\%$), one of the reasons is that it wrongly corrects some anti-context cases where the bias list does not contain the ground truth name but with some other phrases with similar pronunciation. With the external acoustic information, CSCv3 can deal with such issues and achieve stable improvement among different name coverage.

\noindent\textbf{Model size and latency} In Table \ref{tab:model_perf}, CSCv3-EA-student is the student model of CSCv3-EA, which shows similar performance compared to CSCv3-EA but with smaller model size. We also tested the latency of different models on the test set on a machine with
2.60GHz CPU using single thread regardless of baseline ASR model. The quantized onnx student model of CSCv2 is 5.4MB with 38.9ms latency per utterance, while CSCv3 is 6.2MB with 45.5ms per utterance, which indicates slight increase of model size and latency due to the external acoustic attention. Table \ref{tab:latency} lists the latency proportions of different components in CSCv3, which shows the most time-consuming component is bias encoder. To further reduce the latency in real usage, we propose to use a cache mechanism for bias phrase embeddings in continuous ASR recognition (e.g., meetings) by caching pre-calculated bias phrase embeddings. By using this mechanism, the latency of CSCv3 can be reduced to 20.9ms per utterance with cache size 1000.

\begin{table}[h]
  \vspace{-1.0em}
  \caption{Latency proportions of different components in CSCv3}
  \label{tab:latency}
  \centering
  \resizebox{0.9\linewidth}{!}{%
  \begin{tabular}{llll}
    \toprule
    Acoustics adapter & Text encoder & Bias encoder & Decoder \\
    \midrule
    10\% & 11.4\% & 68.1\% & 10.5\% \\
    \bottomrule
  \end{tabular}}
  \vspace{-2.0em}
\end{table}

\section{Conclusion}

In this work, we propose an improved non-autoregressive (NAR) spelling correction model for contextual biasing in end-to-end transducer-based ASR systems with external acoustic attention and semantic aware data augmentation. The proposed model is proved to outperform the baseline ASR+Biasing system by as much as 20.3\% relative name recall gain and achieves stable improvement compared to the traditional CSC method over different bias list coverage ratio.

\bibliographystyle{IEEEbib}

redpajama_set_name: RedPajamaArXiv


Elite Trader is the #1 site for traders of stocks, (forum posts) confidential?? 5G Journaling and Trade Analysis for Forex Traders - by Baron.
Forex Forum (One Forum per page View) Gold, Forex Global-View Forex Forum and fx trading FAQ experienced currency tradingprofessionals can post.


Criminal Minds season 15: Is the summer premiere dream over?
For quite some time now, we've wondered about a dream scenario for Criminal Minds season 15, one where CBS may decide to grant us the final season a little bit earlier than expected. Why? Production is already underway and because the final order of ten episodes is so short, there is a school of thought where you could easily just kick them off in the summer and then save your schedule this fall for some other new shows that you're looking to launch.
Have you seen our Criminal Minds finale discussion? If not, you can check that out at the bottom of this article! On the other side of watching this, remember to subscribe to CarterMatt on YouTube and also be sure to view our official show playlist — you don't want to miss any other updates.
Yet, at least for now, this idea seems to be strictly that: A dream, and one that may not end up coming to fruition. Earlier today, CBS first confirmed their summer premiere dates for a number of scripted shows, and they included the likes of Elementary plus also the return of Instinct and then the premiere of new series Blood & Treasure. There as, unfortunately, no real word as to the status of Criminal Minds, which means if nothing else, it's probably not premiering in May or June. A July premiere is still an intriguing possibility in our mind, if for no other reason than that CBS could still air it then and be done with the season before the start of fall TV in late September.
More than likely, though, the plan is going to be to air the remaining episodes this fall and then have the series finale at some point in December. Given that this show has been a fall/spring show for the entirety of its run, there is a sense of justice in ending it roughly the way that it started. This may also be the best way to generate buzz for it and also market the final season as a true end of an era. While Criminal Minds is not the ratings stalwart that it once was on CBS, we do think that it could generate a nice bit of income for the network with the right promotion around it. the final season is the sort of thing that you could get a lot of old-school fans watching who haven't in a while — if you've been a part of this journey for at least some of its run, why not come back to see how it ends?
Hopefully, we'll have some more insight when it comes to Criminal Minds and the final-season premiere date before long — think in terms of CBS' upfront this May! That's the time when we'll be waiting with bated breath to FINALLY get some news.
Want some other news regarding Criminal Minds?
Then we strongly suggest that you head over to the link here to get a further taste of some of the latest updates, plus character spotlights on some of what lies ahead.


text:
Q: Sort values in stacked bar chart ( by number of values not alphabetically) I want to create stacked bar chart which shows how number of leads by channels changed over a time.
         ID DATE_CREATE SOURCE_ID
320086  344424  2021-12 Facebook
320087  344425  2021-12 Facebook
320088  344426  2021-12 Whatsapp
320089  344427  2021-12 Whatsapp
320090  344428  2021-12 Whatsapp
320091  344429  2021-12 Whatsapp
320092  344430  2021-12 Whatsapp
320093  344431  2021-12 Whatsapp
320094  344432  2021-12 Whatsapp
320095  344433  2021-12 Whatsapp
320096  344434  2021-12 AXCAPITAL
320097  344435  2021-12 Whatsapp
320098  344436  2021-12 Whatsapp
320099  344437  2021-12 Facebook
320100  344438  2021-12 Emirates.Estate

Here is a piece of my Dataset
My code:
leads['DATE_CREATE']=pd.to_datetime(leads['DATE_CREATE'])
leads['DATE_CREATE']=leads['DATE_CREATE'].dt.strftime('%Y-%m')
last_leads=leads[leads['DATE_CREATE']>='2020-01']
top_leads=last_leads[(last_leads['SOURCE_ID']=='Facebook')|
(last_leads['SOURCE_ID']=='AXCAPITAL')|
(last_leads['SOURCE_ID']=='Website Visitor')|
(last_leads['SOURCE_ID']=='TELESALES')|
(last_leads['SOURCE_ID']=='Instagram')|
(last_leads['SOURCE_ID']=='AXCAPITAL UKRAIN')|
(last_leads['SOURCE_ID']=='Company Referral')|
(last_leads['SOURCE_ID']=='LISTINGS PORTAL')|
(last_leads['SOURCE_ID']=='Whatsapp')|
(last_leads['SOURCE_ID']=='BAYUT C') ]
grouped=top_leads.groupby(['DATE_CREATE', 'SOURCE_ID']).size().unstack(level=-1).plot(kind='barh', stacked=True, figsize=(20,10) )

My chart:

I want it to order 'SOURCE_ID' by the number of leads, but here it is given alphabetically. Can you help, please?

A: If need sorting by sum of SOURCE_ID values use:
leads['DATE_CREATE']=pd.to_datetime(leads['DATE_CREATE']).dt.strftime('%Y-%m')

last_leads=leads[leads['DATE_CREATE']>='2020-01']

cats = ['Facebook','AXCAPITAL','Website Visitor','TELESALES',
        'Instagram','AXCAPITAL UKRAIN','Company Referral','LISTINGS PORTAL',
        'Whatsapp','BAYUT C']
#simplier alternative solution for filtering and crosstab
top_leads=last_leads[last_leads['SOURCE_ID'].isin(cats)]

grouped = pd.crosstab(top_leads['DATE_CREATE'], top_leads['SOURCE_ID'])
grouped = grouped.iloc[:, np.argsort(-grouped.sum())]

grouped.plot(kind='barh', stacked=True, figsize=(20,10) )

redpajama_set_name: RedPajamaStackExchange


text:
Building Duty Manager
Theatre Royal Stratford East
The Building Duty Manager is primarily responsible for the safety and security of all users of the spaces run by Theatre Royal Stratford East (TRSE), including the customers of the bar/restaurant, users of rooms, and rehearsal spaces. The Building Duty Manager will be confident in managing the operation of these areas independently and will adhere to all current Health & Safety requirements of the organisation.
Stratford East is a producing theatre in the heart of East London. We have a proud history and an exciting future. We tell stories, spearheading diverse work and champion often-marginalised voices on our stage. Under Nadia Fall's Artistic direction, we present a bold programme of reimagined classics, timely revivals and ground-breaking new work.
Situated in the heart of the East End community, we run an engaging Learning and Participation programme and are accessible and open to all.
Stratford East is committed to safeguarding and embeds safeguarding in all of its working practices.
Contract type: Part time, fixed term until 31st August 2022
Salary: £11.50 per hour
Hours of Work: 28 hours, 4 shifts across Monday - Saturday including evenings
Holidays: 30 days per annum including bank holidays pro rata
Probation: 3 months
Notice period: 8 weeks (after probation)
Pension: Up to 5% matched pension contribution after qualifying period
Application Deadline: Monday 13th December 2021 at 12pm
To obtain an application pack, including a full job description, please visit our website: http://bit.ly/vacancies-stratford-east
It is intended that initial interviews will take place on Thursday 16th December 2021.
TRSE is committed to a policy of equal opportunities embracing diversity in all areas of activity and positively welcomes applications from disabled people and people of all ethnicities.
Please click here for an application pack containing a full job description

redpajama_set_name: RedPajamaCommonCrawl


text:
Jump to Main
Main navigation and Meta Navigation
Location Navigation
Edition Selection Singapore Edition International Edition
Meta Main Navigation
My News Feed
CNA938 Live
meREWARDS i
Cashback S$
meREWARDS lets you get coupon deals, and earn cashback when you complete surveys, dine, travel and shop with our partners
OpenAll Sections All SectionsClose
Section Navigation Title
CNA Lifestyle
OpenAll Sections
Commentary: India has a sexual assault problem only women can fix
Toggle share menu
Jump to top Search
Singapore Edition International Edition
All Sections Close
CNA Eyewitness
Singapore Parliament
Telegram News Service
Huawei App Gallery
Commentary Commentary
Having more female leaders in politics won't solve violence against women or other gender issues, but it can better protect vulnerable women from abuse, says one observer.
A woman walks past a portrait of J. Jayalalithaa, former Chief Minister of the southern state of Tamil Nadu, in Chennai, India, March 13, 2012. (Photo: REUTERS/Babu)
By Nisha Bellinger
24 Sep 2018 06:19AM (Updated: 24 Sep 2018 06:20AM )
BOISE, Idaho: India is the most dangerous country for sexual violence against women, according to the Thomson Reuters Foundation 2018 survey.
The survey, which measures sexual and non-sexual violence, discrimination, cultural traditions, healthcare and human trafficking, has been criticised for reflecting more perception than data.
But India barely fares better in other studies that rank its treatment of women. It placed 131st of 152 countries in the Georgetown Institute's global ranking of women's inclusion and well-being.
India's National Crime Records Bureau reported 338,954 crimes against women – including 38,947 rapes – in 2016, the most recent government data available. That's up from 309,546 reported incidents of violence against women in 2013.
High-profile attacks on Indian women have shocked this nation of 1.3 billion in recent years.
The 2012 gang rape of a 23-year-old student in Delhi who died from her injuries caused public outrage. The incident helped spur an amendment to India's criminal law, which broadened the definition of sexual crimes against women to include stalking, acid attacks and voyeurism.
This year, Prime Minister Narendra Modi issued an executive order allowing the death penalty as a punishment for people convicted of sexually assaulting a child under 12.
READ: When children say they've been sexually abused, believe them, a commentary
But stricter laws apparently did little to prevent 34 girls from being tortured and raped at government-funded shelters in India's Bihar state earlier this year.
WOMEN'S REPRESENTATION IN INDIA
My research on diversity in government suggests that one of the reasons India has not been able to effectively address crimes against women is the lack of women in national political office.
That's because, research shows, having women in government can lead to more and better laws that safeguard women's well-being.
A woman reacts at a protest against the rape of an eight-year old girl, in Kathua, near Jammu and a teenager in Unnao, Uttar Pradesh state. (Photo: REUTERS/Cathal McNaughton)
India's population is 48 per cent female. But women hold just under 12 per cent of seats in the national legislature.
That falls well below the 30 per cent "critical mass" that the United Nations Equal Opportunity Commission believes is necessary for women lawmakers to be influential in policymaking.
Local governments in India actually have a quota system that ensures women hold one-third of seats in rural and city councils. But female representation in India's far more powerful national government remains comparable to countries like the Republic of Congo and Mauritius, where women hold about 11 per cent of legislative seats.
Rwanda, where 61 per cent of legislators are female, has the most women in government of any nation in the world, followed by Cuba, with 53 per cent.
These are not necessarily the safest places in the world for women.
According to the Georgetown Institute's ranking of women's well-being, Iceland, Norway, Switzerland, Slovenia and Spain are some of the safest – all countries where women hold over 30 per cent of legislative seats.
Political representation does not translate precisely, directly or immediately into physical security for a given population. But it's a start.
READ: What took Singapore so long to move against marital immunity for rape? A commentary
WOMEN HELP WOMEN
Research demonstrates that governments that include representatives from across society – that is, of different political parties, races, classes, genders, geographies and religions – produce better quality of life for citizens than less inclusive governments.
Countries with a vibrant political party system enable diverse groups to influence decision-making. This is because they are a product of deliberation and cooperation between politicians with divergent ideologies, policies formulated in such societies are more likely to reflect the needs of diverse groups.
Scholarship likewise indicates that women in office may prioritise different kinds of policies than men – including those that address the needs of women and children.
Uma Bharti, Union Minister for Sanitation and Drinking Water and former Madhya Pradesh chief minister, at the presidential palace in New Delhi May 26, 2014. (Photo: REUTERS/Adnan Abidi)
READ: For women of different cultures, classes, backgrounds and age – it's still a man's world, a commentary
In New Zealand, where women hold 38 per cent of parliamentary seats and the prime minister is a woman, lawmakers recently guaranteed paid leave for victims of domestic violence. That gives victims time to relocate, protecting themselves and their children from their abusers.
Women in the United States Congress have also proactively addressed sexual harassment inside government.
In March, female senators from both parties – who make up 22 per cent of the US Senate – pushed Senate leadership to call a vote on legislation that would give legal representation to women who complain of sexual harassment on Capitol Hill and reduce barriers to filing a formal complaint.
The bill passed in May, and is currently being reconciled with the House's version of a similar bill.
And it was the late chief minister of India's Tamil Nadu state, J Jayalalithaa, who in 2010 announced a 13-point action plan for the state to better protect sexual violence survivors.
Her provisions, which have since been partially implemented, included state-paid medical expenses after abuse, female investigating officers and fast-track courts for sexual violence cases.
READ: Sexual harassment in South Korea exposes hypocrisy and a culture of intimidation, a commentary
A sign supporting women's rights hangs on a tree before the start of an #IWillGoOut event, organised to show solidarity with the Women's March in Washington, inside a public park in Kolkata, India, January 21, 2017. (Photo: REUTERS/Rupak De Chowdhuri)
India's 2013 national legislation on sexual violence ignores many of these victims' rights issues, as the human rights organisations Human Rights Watch and Amnesty International have pointed out.
MORE WOMEN IN POLITICS NEEDED
India has contemplated the need for more women in public office.
In 2010, the upper house of its legislature voted on a bill that would have designated one-third of seats in national and state legislative assemblies for women. Then-Prime Minister Manmohan Singh described it as a "historic step forward toward emancipation of Indian womanhood".
But the lower house never voted on the bill. And though Prime Minister Modi has expressed support for a gender quota in Indian government, he has made little effort to work with parliament to get the legislation passed.
Putting Indian women in positions of political power won't solve a longstanding, pervasive and entrenched social issue like violence against women.
But evidence suggests that an Indian government with more women in it could better protect Indian women by passing comprehensive laws that defend women from abuse and help victims recover.
Nisha Bellinger is assistant professor of political science at Boise State University. A version of this commentary first appeared on The Conversation. Read it here.
Source: CNA/nr(sl)
Tagged Topics
More stories for you
Save time with a quick summary of the headlines.
Get CNA's Evening Brief newsletter
Stay on top of major news and announcements made through the workday.
It looks like the email address you entered is not valid.
This service is not intended for persons residing in the EU. By clicking subscribe, I agree to receive news updates and promotional material from Mediacorp and Mediacorp's partners.
More information about CNA
About CNA
Presenters & Correspondents
Mediacorp Digital Network
Pressed for time? Stay informed with CNA's newsletters
Choose a newsletter
Evening Brief
Experience news with our apps
Copyright© Mediacorp 2021. Mediacorp Pte Ltd. All rights reserved.


text:
Politics: Fast and Slow
Cutting through the headlines. Demystifying the future. Creating sensible policy.
Past ArticlesPoliticsEconomicsSociety
Manny Otiko
Black People Vote, White People Have a 'Rageasm'
White grievance plays a major role in MAGA revolt
Trump-inspired terrorists attack the Capitol (Tyler Merbler/Flickr)
Sometimes I feel like I'm dealing with cognitive dissonance when I watch the events unspooling. My brain is having a hard time processing the information before me. Currently, 20,000 National Guard troops are protecting the Capitol against domestic terrorists inspired by President Donald Trump, who was impeached for the second time by the House of Representatives.
Trump-inspired terrorism
Although it sounds like a plotline from "The X Files," thousands of Americans are currently involved in a quasi-religious conspiracy cult that has penetrated the top-levels of the government. Rachel Maddow recently reported that the FBI warned against IED attacks at the inauguration and attacks on all state capitols.
Malcolm Nance, a former intelligence officer, explained the current, dangerous situation in a Congressional Black Caucus hearing on Wednesday. He said the United States is currently in an insurgency. He dubbed it Trump Insurgency in the United States (TITUS.)
"It is a wholly white supremacist rebellion," said Nance.
But the scary thing is the members of this domestic terrorist group could be anyone. "They're your neighbors," said Nance. If you need further proof, look at some of the people who participated in the Capitol attack. Police officers, firefighters, servicemen and women, doctors, investment bankers, and an Olympic gold medal-winning swimmer! They've been radicalized by Trump and believe in the nonsensical QAnon conspiracy theory. As Nance pointed out, they're also willing to kill Americans. Five people died at the Capitol, including a police officer.
As I look at the National Guard troops milling around the Capitol, I hope they're willing to shoot Americans because these people are no longer fellow citizens. …
Sheldon Clay
A Miserable End to Four Years of Mob Rule
The Jan. 6 storming of the U.S. Capitol was a shock but it shouldn't have been a surprise.
We've seen the true colors of the Republican Party. Photo by Dalton Caraway on Unsplash
Right from the start we've struggled to define the Trump Administration's particular brand of populism. Chaos. Authoritarianism. A con. A cult. An alternate reality. White nationalism. Fascism.
Finally we just called it Trumpism.
On January 6 we saw it for what it really is. Mob rule.
It took the brutalization of one of our most sacred democratic shrines to understand that. But look back over the past four years. Trump's populist rhetoric has always been a thin veneer over something that operated more on the level of the barbarians sacking Rome.
Now the veneer is off. The lies spread by the president and his party have come home to roost. The Trumpists have stormed the gates. We're left with the painful image of invaders standing in the chambers of the House and Senate. Some actually wearing horns and animal hides. …
Capitol Attack Was Round 2 of Trump Insurrection
Nance warns insurrectionists aren't going away
President Donald Trump riles up his followers before the Capitol attack (VOA/Facebook)
You would think that after reading Malcolm Nance's books and listening to him over the last four years, I would have learned to trust his predictions. He warned of the coming MAGA terrorist attack about two weeks ago on "The Stephanie Miller Show." Nance, a retired intelligence officer, was one of the first to sound the alarm about Russian dictator Vladimir Putin's ties to President Donald Trump. He also warned of the Russian-led influence campaign which had "hacked Americans' minds" and convinced them to associate Hillary Clinton with emails and corruption, and overlook Trump's checkered past. …
Ashli Babbitt Was a Traitor Who Died From Terminal Stupidity
QAnon adherent followed Trump cult to her death
Ashli Babbitt (YouTube screencap/Manny Otiko)
Ashli Babbitt, a San Diego, Calif. resident and Air Force veteran, was the first person killed in the Trump terrorist attack. She was shot in the neck when she refused police orders and entered a broken window in the Capitol building. She was a traitor who fought against her own country and died because she bought into ridiculous conspiracy theories. Like Herman Cain, who refused to wear a mask in the middle of a deadly pandemic, she followed the Trump cult to her death.
An ardent conspiracy theorist
It didn't take me long to figure out Babbitt was a conspiracy theorist. One of the first stories mentioned her saying "the storm is here" in a tweet. The storm is a phrase used by the insane-beyond belief QAnon conspiracy theory. The storm refers to a time when QAnon followers think that Trump will order the round up and execution of the Satanic elites who drink children's blood. (Yes, really.) Trump signaled to this insane conspiracy group that he's in on it, when he used the phrase "The calm before the storm," during a White House press conference. The FBI has listed QAnon as a national security threat. …
Matthew Barad
Four Things you Should Scream at Every Liberal you Know.
#1: There's no such thing as a good Republican.
On January 6th, 2021, as Congress was in the process of certifying Republican President Donald Trump's defeat, thousands of Republicans attacked the capital resulting in a lockdown, delay, and four deaths.
For months prior to this, Republican politicians openly supported the idea of contesting the election results to prevent Trump from leaving office, while dozens of Republican attorneys, legislators, and donors actively campaigned to change the outcome of the election.
For decades prior to this, Republicans have courted white supremacy, adopted fascist foreign policy programs, and worked to undermine democracy. In 2000, Republican President Bush came to power on a wave of fascist riots seeking to prevent a full and fair vote count and used his term in office to grow the movement of white conservative evangelicals who attempted a coup on January 6th. …
Maybe You Should've Listened to Our Warnings About Trump
Experts, writers sounded alarm about wannabe dictator for years
Trump terrorists invade the Capitol. (VOA)
So, it finally happened. The president of the United States launched a terrorist attack against his own country. And the U.S. confirmed it's status as a third world country to the entire world. Of course, many experts and writers have warned of this for years. I knew Trump was a Russian agent five years ago and that's why I was devastated when he won the presidency.
I also saw the signs of Trump's dictatorial tendencies. I called him a wannabe dictator and said he reminded me of African despots in a 2018 column. I've interviewed experts, such as Yale psychiatrist Dr. Brandy Lee, who said Trump was similar to criminal patients she'd worked with. She compared him to a mentally-ill person with a cache of weapons. I interviewed Dr. Ruth Ben-Ghiat, an expert in fascism who predicted Trump wouldn't leave willingly. And I also talked to Steve Hassan, a cult deprogrammer, who said Trump had brainwashed the MAGA cult. Wednesday was the end product of five years of willful ignorance and enabling. We witnessed a mob of deranged cultists, conspiracy theorists and white supremacists invade the Capitol in an attempt to overthrow the government. …
Kevin Breidenbach
Still Reason For Worry In Assange Case
Freedom of the press is still under threat
Photo: GrimsbyT | Wikimedia Commons
Earlier this week, U.K. judge Vanessa Bararitser blocked the extradition of Julian Assange to the U.S., citing "extreme risk of suicide." The judge said that extradition to the U.S. "would be unjust and oppressive by reason of Mr. Assange's mental condition," due to the conditions he would likely face if imprisoned here. While this was indeed good news, it was a brief and bittersweet victory.
To begin with, as Jonathan Cook pointed out in an article on Popular Resistance, the judge's rejection of the extradition was based on "what was effectively a technicality." It almost appears as though this may have simply been a delaying tactic, as the judge seems to have not had any problem with the U.S. prosecution's request itself. …
FOX News, Newsmax Promote 'Anti-Journalism'
Right-wing infotainment keeps conservatives dangerously misinformed
Newsmax's Greg Kelly called Trump's phone call "perfect." (Sgt. Mikki Sprenkle/Wikipedia)
You would think that after years of monitoring right-wing media, it would be impossible to shock me. But I'm always surprised. I know the right-wing entertainment machine isn't journalism. It's well-packaged propaganda designed to keep people in a conservative bubble, but still …
On Monday, I saw an article from Newsmax that contained all the previously mentioned issues. The article was clearly not journalism. It was anti-journalism, designed to keep people ignorant. After The Washington Post released a recording that placed President Donald Trump's criminality above President Richard Nixon's, a Newsmax story claimed it was no big deal.
Another 'Perfect Call'
"If you listened to it, it's totally fine," said host Greg Kelly. "Remember, he said the phone call with the Ukraine president was perfect? It was, and so is this. They are so bad, so bad and trying to make this an issue." …
Jonny McCormick
Kamala Harris the Ten Year President
Joe Biden could change American politics if he wants to
In two weeks, Joe Biden will fulfil a lifetime ambition as he is inaugurated as the 46th president of the United States of America. This election has been historic for many reasons. Firstly, there was the long slog and blistering battle between more than a dozen candidates in the run up to and during the primaries. Secondly, this was a hotly contested election between Donald Trump fighting to retain incumbency, and a lifelong political operative, Joe Biden. Thirdly, this election was fought against the backdrop of a once in a generation global pandemic which fundamentally reshaped almost every facet of public life. …
Wash. Post Tape is Vintage Trump: Gaslighting, Conspiracies, Crime
Senate failed to punish Trump in '19; he's still breaking the law
President Donald Trump (Gage Skidmore)
I took a break from writing on Medium over the Holiday season. And over the weekend, I was searching for ideas for a column. I should have known better. Even in the waning days of Donald Trump's idiocracy, there's always an hourly scandal. And on Sunday, The Washington Post's recording of Trump's phone call with Georgia election officials dropped.
Alex Jones on crack
'I just want to find 11,780 votes': In extraordinary hour-long call, Trump pressures Georgia…
President Trump urged fellow Republican Brad Raffensperger, the Georgia secretary of state, to "find" enough votes to…
www.washingtonpost.com
The recording, which was deliberately leaked, is vintage Trump. I listened to the full recording, and it's one hour of Trump gaslighting, threatening Georgia election officials and spouting conspiracy theories that sound like Alex Jones on crack. He sounded like your crazy uncle before he gets carted off to the nursing home. …


text:
Tax breaks spread Brazil's research burden
By BRIAN HOMEWOOD
In an attempt to revive research in Brazil, the government is looking
to private industry to chip in to increase the meagre sum of money spent
on science in Latin America's largest country.
Since 1981, Brazil has spent around $2 billion dollars a year on scientific
research and development, nearly all of it coming from the budgets of various
government institutions. But with the government's coffers almost perpetually
empty and the budget effectively falling every year, the science and technology
ministry has introduced two tax incentive schemes aimed at luring private
agricultural and industrial companies into spending more on research.
The private sector currently contributes only around 10 per cent of
Brazil's expenditure on research. Jose Israel Vargas, the minister for science
and technology, hopes to increase this to 30 per cent by the end of next
year and 50 per cent by 2000. 'At present, there is an enormous distortion
in the Brazilian situation which results in the country spending only 0.7
per cent of its GNP on science and technology,' says Vargas.
Under a law which came into effect in January, companies which spend
more than 5 per cent of their revenue on research are now exempt from the
IPI, a hefty tax on imported products. This programme is expected to provide
$300 million for research this year. The second scheme allows companies
to spend 8 per cent of the tax they owe on research. This is expected to
provide a further $400 million.
The government has set up a special body called Finep (Financing of
Studies and Projects) to approve all applications with the minimum of bureaucracy,
usually a serious problem in the country. Finep says that it currently
has around 40 applications for projects waiting to be approved.
Despite an entrenched distrust between Brazilian scientists and industrialists,
the programme has been welcomed by both sides. 'There's no way that Brazil's
public sector can finance science and technology alone,' says Roberto Leal
Lobo, former rector of the University of Sao Paulo.
The bad news is that many government-run institutions remain in dire
straits, with a continual flow of scientists leaving the country to work
abroad, decaying infrastructure, and bureaucracy consuming resources destined
for research. Researchers working abroad on government scholarships often
find that their grants arrive weeks late because of strikes or simply because
the money has been sent to the wrong bank. Sources at the science and technology
ministry say that wages consume up to 25 per cent of the ministry's annual
Magazine issue 1930 , published 18 June 1994
Bats sow seeds of rainforest recovery
Laser son of Star Wars lives on in a Jumbo jet


Peter Crook, Amy Thone, Darragh Kennan, Connor Toms and Renata Friedman. Photo by Chris Bennion.
Young Prince Hamlet returns to Denmark as strange and sorrowful times befall the country—his father, the King, suffered a murder most foul. The Prince is sure that blame lies with Claudius, lately his uncle and now his King and husband to his mother. This betrayal is more than the Prince can bear. Soon he is out of his wits, spouting "wild and whirling words" denouncing his love for the sweet Ophelia. Or is this madness merely a ruse to "catch the conscience of the king" so Hamlet may enact his revenge? Sensing the danger his nephew presents, Claudius conspires to slay Hamlet. And amidst the clashing of swords and passing of poisoned goblets, all the players fall prey to the treachery that stains the soil of poor Denmark.


What I see is Louis peeking over the comforter to see what I'm up to. What I think is that he doesn't let much get past his notice.
This entry was posted on July 3, 2012 by fmichellemoran. It was filed under Critters and was tagged with dogs, George Bernard Shaw, humor, life, nosiness, people, philosophy, photography, Quotes.
Poor guy, he needs a vacation!
And look at those ears! I bet he doesn't miss much, does he?
Not much at all! He hears me turn my head! It's very hard to ever get a peek at him without his noticing.
I came close to adding "a-boo" to the title, haha. It was hard to resist.
i think he is amused by you and your camera.


text:
// Copyright (c) Microsoft Corporation.
// All rights reserved.
//
// This code is licensed under the MIT License.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files(the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions :
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

@class ADAuthenticationError;
@class ADAuthenticationViewController;
@class ADTelemetryUIEvent;
@class ADRequestParameters;

#import "ADAuthenticationContext.h"

/*! Fired at the start of a resource load in the webview. The URL of the load, if available, will be in the @"url" key in the userInfo dictionary */
extern NSString* ADWebAuthDidStartLoadNotification;

/*! Fired when a resource finishes loading in the webview. */
extern NSString* ADWebAuthDidFinishLoadNotification;

/*! Fired when web authentication fails due to reasons originating from the network. Look at the @"error" key in the userInfo dictionary for more details.*/
extern NSString* ADWebAuthDidFailNotification;

/*! Fired when authentication finishes */
extern NSString* ADWebAuthDidCompleteNotification;

/*! Fired before ADAL invokes the broker app */
extern NSString* ADWebAuthWillSwitchToBrokerApp;

/*! Fired when the application receives a response from the broker. Look at the @"response"
    key in the userInfo dictionary for the broker response */
extern NSString* ADWebAuthDidReceieveResponseFromBroker;

@interface ADWebAuthController : NSObject
{
    ADAuthenticationViewController * _authenticationViewController;

    NSLock * _completionLock;
    NSString * _endURL;

    BOOL _loading;
    // Used for managing the activity spinner
    NSTimer* _spinnerTimer;

    BOOL _complete;

    ADRequestParameters* _requestParams;
    ADTelemetryUIEvent* _telemetryEvent;

    void (^_completionBlock)( ADAuthenticationError *, NSURL *);
}

//Cancel the web authentication session which might be happening right now
//Note that it only works if there's an active web authentication session going on
+ (void)cancelCurrentWebAuthSession;

#if TARGET_OS_IPHONE
/*!
 If the application was terminated between ADAL calling out to the broker app and
 receiving a response, then the request can't be continued in a normal fashion. An
 application can use this API to retrieve a response that was received from the
 broker but we no longer had an active completion block to hand it to.
 */
+ (ADAuthenticationResult *)responseFromInterruptedBrokerSession;
#endif

@end

redpajama_set_name: RedPajamaGithub


text:
San Diego Rowing Club
Members of the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
As the sun sets, members of the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Rowers with the San Diego Rowing Club take an eight man boat off a rack at the Goggeshall Rowing Center before they practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Benton Sparks, the coach of the San Diego Rowing Club's men's varsity squad, speaks to his rowers before they head out to practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Members of the men's varsity squad carry an eight man boat to the water at the Goggeshall Rowing Center in preparation for practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Members of the San Diego Rowing Club's men's varsity squad get in their boat as they head out into Mission Bay to practice. (Hayne Palmour IV / San Diego Union-Tribune)
Members of the San Diego Rowing Club's men's varsity squad row under the West Mission Bay Drive bridge. (Hayne Palmour IV / San Diego Union-Tribune)
Cal Akin, 17, and other members of the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Paddles hit the water as the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Henry Gray, 15, hops on a coach's boat as he trades position with another rower. (Hayne Palmour IV / San Diego Union-Tribune)
Assistant men's coach Pete Simeone talks to members of the men's varsity squad during practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Coxswain Justin Lobo, 15, calls out to rowers as the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Benton Sparks, the coach of the San Diego Rowing Club's men's varsity squad, calls out to his rowers as they practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Seth Hanson, 17, wipes his forehead during a break as he and other members of the San Diego Rowing Club's men's varsity squad practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
As the sun sets, members of the San Diego Rowing Club's men's varsity squad row back to the Goggeshall Rowing Center after they practiced on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Members of the San Diego Rowing Club's men's varsity squad gather up their gear after practice on Mission Bay. (Hayne Palmour IV / San Diego Union-Tribune)
Show Slide Information


text:
Reuters/Jason Lee
I'm not angry, just disappointed.
DAMNED IF YOU DO...
Now China's officials are getting into trouble for not spending enough money
By Richard Macauley September 30, 2015
While much of the focus of China's anti-corruption drive has been on lavish overspending by government officials, some of those facing punishment actually didn't spend enough government money—they were castigated for not carrying out expenditures that the government had allocated to a project.
Almost 250 government officials have been sacked, demoted, or have received warnings in a crackdown against those who do not push through central government directives quickly enough, according to state newswire Xinhua (link in Chinese).
A separate Xinhua report (link in Chinese) cited a project in Henan province that was due for completion this year, and for which the central government allocated 150 million yuan ($23.6 million) in 2013. Nine officials received demotions and warnings after an investigation found that the project had still not begun by May this year. In Shanxi province, construction on a food recycling plant had not begun despite funding being made available in 2012.
The punishments come after the Chinese Communist Party (CCP) established new rules concerning demotion in July this year. Before then, personnel rules suggested an official could move up the ranks if they were good, or stay at the same level if not; officials could only be demoted if they broke either the law or the CCP's rules.
Clearly, such a system could end up supporting lazy or inefficient officials, and the drive to punish inaction among government functionaries is designed specifically to root out such cases. But another major campaign from the central government—president Xi Jinping's anti-corruption drive—has at times been blamed precisely for encouraging such inaction.
Xi's campaign has focused on crimes related to embezzlement, misdirection of funds, or inappropriate spending. Since it began almost two years ago, it has netted hundreds of high-level government officials. It has succeeded in reducing government spending on items such as luxury gifts and fine wines at government dinners, but some officials have been so worried about looking corrupt that they have put even legitimate projects on hold.
"Local officials are no longer keen to launch investment projects," a government official in Zhejiang province told Reuters last year. "They are laying low."


text:
CBN launches eNaira digital currency
Godwin Emefiele CBN Governor
By Our Editor
Nigeria central bank digital currency (CBDC), the eNaira, has gone live after an official launch by President Muhammadu Buhari on Monday.
Buhari launched the eNaira at the State House in Nigeria's capital Abuja after a previous plan to unveil the digital currency on October 1 was put on hold.
"We have become the first country in Africa and one of the first in the world to introduce a digital currency to our citizens," Buhari said at the official launch.
Nigeria is one of the five countries in the world to develop an official digital currency. 14 other countries are at the pilot stages of launching theirs, according to the Atlantic Council's CBDC tracker.
The Central Bank of Nigeria (CBN) engaged a Barbados-based digital financial technology firm, Bitt Inc, as a technical partner to develop the e-Naira.
With operations spreading across the Caribbean, Bitt utilises blockchain and distributed ledger technology to facilitate peer-to-peer (P2P) transactions with mobile money across a suite of Bitt's Software and mobile applications.
Nigeria has so far launched two mobile applications – eNaira speed wallet and eNaira merchant wallet – on Google playstore and Apple store for the usage of digital currency.
CBN said the guidelines on how to navigate the applications "seeks to provide simplicity in the operation of eNaira, encourage general acceptability and use, promote low cost of transactions, drive financial inclusion while minimizing inherent risks of disintermediation of any negative impact on the financial system."
CBN governor Godwin Emefiele in August listed the benefits of the e-Naira to include increased cross-border trade and accelerated financial inclusion.
At the launch on Monday, Emefiele, said 500 million eNaira ($1.21 million) has already been minted.
Previous President Buhari to Unveil e-Naira on Monday
Next PERSIST UNTIL YOU SUCCEED
PERSIST UNTIL YOU SUCCEED
President Buhari to Unveil e-Naira on Monday
Plateau: Gov.Lalong orders aide to fast track electrification of Satellite Market


im new to the game engine world and im currently comparing engines to find my choice.
I know that especially for complex models its recommended to use blender, autodesk, etc.
But I dont like that workflow at all.
Is there a way to create custom models, drag arround vertices, and animate vertex movement? For example animate a mouth saying different syllables ?
is there an addon i can purchase that can do such a thing?


text:
package com.dimowner.tastycocktails.dagger.random;

import android.arch.lifecycle.ViewModelProviders;
import android.support.v4.app.Fragment;

import dagger.Module;
import dagger.Provides;

import com.dimowner.tastycocktails.FirebaseHandler;
import com.dimowner.tastycocktails.cocktails.details.DetailsViewModel;
import com.dimowner.tastycocktails.cocktails.details.DetailsViewModelImpl;
import com.dimowner.tastycocktails.dagger.details.DetailsScoupe;
import com.dimowner.tastycocktails.data.Repository;
import com.dimowner.tastycocktails.random.RandomContract;
import com.dimowner.tastycocktails.random.RandomPresenter;

/**
 * Created on 27.07.2017.
 * @author Dimowner
 */
@Module
public class RandomCocktailModule {

	private Fragment fragment;

	public RandomCocktailModule(Fragment fragment) {
		this.fragment = fragment;
	}

	@Provides
	@RandomCocktailScope
	RandomContract.UserActionsListener provideDetailsPresenter(Repository repository, FirebaseHandler firebaseHandler) {
		RandomPresenter presenter = ViewModelProviders.of(fragment).get(RandomPresenter.class);
//		MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
		presenter.setRepository(repository);
		presenter.setFirebaseHandler(firebaseHandler);
		return presenter;
	}

//	@Provides
//	@DetailsScoupe
//	DetailsViewModel provideDetailsViewModel(Repository repository) {
//		DetailsViewModelImpl viewModel = ViewModelProviders.of(fragment).get(DetailsViewModelImpl.class);
//		viewModel.setRepository(repository);
//		return viewModel;
//	}
}


text:
import os
from swift.dedupe.deduplication import ChunkStore
from swift.common.utils import parse_options
from swift.common.wsgi import appconfig, ConfigFileError
from time import sleep
from swift.dedupe.time import time, time_diff
import six.moves.cPickle as pickle
from directio import read, write
from swift.dedupe.dedupe_container import DedupeContainer

test_upload_file_num = 10000
test_download_file_num = 100

# To simulate the store and read process
compress = False
decompress = False
async_compress = False
write_delay = False
read_delay = False
compress_pool = False

network_throughput = 94.0
compress_rate = 0.2482
compress_speed = 12.64
decompress_speed = 1331.49

class TestStore(ChunkStore):
    def __init__(self, conf):
        ChunkStore.__init__(self, conf=conf, app=None)
        self.fake_container = None

    def put(self, fp, chunk):
        ChunkStore.put(self, fp, chunk, None, None)

    def get(self, fp):
        return ChunkStore.get(self, fp, None, None)

    def _store_container(self, container):
        store_start = time()
        data = container.dumps()
        l = len(data)
        compress_start = time()
        if compress:
            if not async_compress:
                delay_time = 1.0*l/1024/1024/compress_speed
                sleep(delay_time)
        compress_end = time()
        self.summary.compression_time += time_diff(compress_start, compress_end)
        if write_delay:
            l *= compress_rate
            trans_time = 3.0*l/1024/1024/network_throughput # here we use 3-copies, so the size is 3 times larger
            sleep(trans_time)
        store_end = time()
        self.summary.store_time += time_diff(store_start, store_end)

    def _store_container_fp(self, container):
        if not os.path.exists(self.container_fp_dir):
            os.makedirs(self.container_fp_dir)
        path = self.container_fp_dir + '/' + container.get_id()
        fps = container.get_fps_lens()
        data = pickle.dumps(fps)
        if self.direct_io:
            f = os.open(path, os.O_CREAT | os.O_APPEND | os.O_RDWR | os.O_DIRECT)
            len_data = len(data)
            if (len_data % 512) != 0:
                ll = 512 - len_data%512 # alligned by 512
                data += '\0'*ll
            try:
                write(f, data)
            except Exception as e:
                pass
            finally:
                os.close(f)
        else:
            with open(path, 'wb') as f:
                pickle.dump(fps, f)

    def _load_container_fp(self, container_id):
        if container_id == self.container.get_id():
            fps = self.container.get_fps_lens()
            return fps
        path = self.container_fp_dir + '/' + container_id
        if not os.path.exists(path):
            return None
        if self.direct_io:
            ll = os.path.getsize(path)
            f = os.open(path, os.O_RDONLY | os.O_DIRECT)
            try:
                data = read(f, ll)
                fps = pickle.loads(data)
            except Exception as e:
                pass
            finally:
                os.close(f)
        else:
            with open(path, 'rb') as f:
                fps = pickle.load(f)
        return fps

    def _fill_cache_with_container_fp(self, container_id):
        fps_lens = self._load_container_fp(container_id)
        print 'load container id %s' % container_id
        for fp, l in fps_lens:
            self._add2cache(self.fp_cache, fp, container_id)

    def retrieve_container(self, container_id):
        dedupe_start = time()
        path = self.container_fp_dir + '/' + container_id
        if not os.path.exists(path):
            return None
        with open(path, 'rb') as f:
            data = f.read()
        kv = pickle.loads(data)
        size = 0
        for _, l in kv:
            size += l
        size *= compress_rate
        if compress_pool:
            self.container_pool[container_id] = (size, kv)
        else:
            self.fake_container = (size, kv)
        if read_delay:
            delay_time = 1.0*size/1024/1024/network_throughput
            sleep(delay_time)
        dedupe_end = time()
        self.summary.retrieve_time += time_diff(dedupe_start, dedupe_end)
        container = self.get_container_from_compressed_data(data, container_id)
        return container

    def get_container_from_compressed_data(self, data, dc_id):
        dedupe_start = time()
        if compress_pool:
            size, kv = self.container_pool[dc_id]
        else:
            size, kv = self.fake_container
        if decompress:
            delay_time = 1.0*size/1024/1024/decompress_speed
            sleep(delay_time)
        dc_container = DedupeContainer(dc_id)
        for fp, l in kv:
            chunk = get_str(l)
            dc_container.add(fp, chunk)
        dedupe_end = time()
        self.summary.decompression_time += time_diff(dedupe_start, dedupe_end)
        return dc_container

def get_size(finger_path):
    with open(finger_path, 'r') as f:
        line = f.readline()
        while line:
            name = line
            total_size = 0
            line = f.readline()
            while line and (not line.startswith('/')):
                size = line.split()
                size = int(size[1])
                total_size += size
                line = f.readline()
            else:
                total_size = float(total_size)/1024/1024
                print 'file %s has total length: %d' % (name, total_size)

def get_str(length=8, random=False):
    if not random:
        data = 'x'*length
        return data
    else:
        pass

def show_stat(chunk_store):
    chunk_store.summary.read_disk_num = chunk_store.index.read_disk_num
    chunk_store.summary.read_disk_time = chunk_store.index.read_disk_time
    chunk_store.summary.write_disk_num = chunk_store.index.write_disk_num
    chunk_store.summary.write_disk_time = chunk_store.index.write_disk_time
    chunk_store.summary.disk_hit = chunk_store.index.hit_num
    info = chunk_store.summary.get_info()
    for entry in info:
        print entry
    chunk_store.log_message(info)

def test_put(chunk_store, finger_path):
    file_num = 0
    if not os.path.exists(finger_path):
        print 'no fingerprint file'
        return
    with open(finger_path, 'r') as fp_in:
        file_size = 0
        start_time = time()
        for line in fp_in:
            if line.startswith('/'):
                if file_num >= test_upload_file_num:
                    break
                file_num += 1
                print 'file %s' % line
                show_stat(chunk_store)
                end_time = time()
                time_gap = time_diff(start_time, end_time)
                if time_gap > 0.0:
                    print ('put throughput %f MB/s' % (file_size*1.0/1024/1024/time_gap))
                start_time = end_time
                file_size = 0
                continue
            # print chunk_store.summary.total_chunk
            line = line.strip()
            data = line.split()
            fp = data[0]
            size = int(data[1])
            data = get_str(size)
            file_size += size
            if write_delay:
                delay_time = 1.0*size/1024/1024/network_throughput
                sleep(delay_time)
            chunk_store.put(fp, data)

        print 'At last, we give the result'
        show_stat(chunk_store)
        end_time = time()
        time_gap = time_diff(start_time, end_time)
        if time_gap > 0.0:
            print ('put throughput %f MB/s\n' % (file_size*1.0/1024/1024/time_gap))

def test_get(chunk_store, finger_path):
    file_num = 0
    if not os.path.exists(finger_path):
        print 'no fingerprint file'
        return
    with open(finger_path, 'r') as fp_in:
        file_size = 0
        start_time = time()
        for line in fp_in:
            if line.startswith('/'):
                if file_num >= test_download_file_num:
                    break
                file_num += 1
                print 'file %s' % line
                show_stat(chunk_store)
                end_time = time()
                time_gap = time_diff(start_time, end_time)
                if time_gap > 0.0:
                    print ('get throughput %f MB/s' % (file_size*1.0/1024/1024/time_gap))
                start_time = end_time
                file_size = 0
                continue
            #print chunk_store.summary.total_chunk
            line = line.strip()
            data = line.split()
            fp = data[0]
            size = int(data[1])
            file_size += size
            chunk = chunk_store.get(fp)
            if read_delay:
                delay_time = 1.0*size/1024/1024/network_throughput
                sleep(delay_time)

        print 'At last, we give the result'
        show_stat(chunk_store)
        end_time = time()
        time_gap = time_diff(start_time, end_time)
        if time_gap > 0.0:
            print ('get throughput %f MB/s\n' % (file_size*1.0/1024/1024/time_gap))

def start_test(put=True, get=True):
    conf_file, options = parse_options()
    extra_args = options.get('extra_args')
    finger_path = extra_args[0]
    try:
        conf = appconfig(conf_file, name='proxy-server')
    except Exception as e:
        raise ConfigFileError("Error trying to load config from %s: %s" %
                              (conf_file, e))
    chunk_store = TestStore(conf)
    if put:
        print 'start to test write'
        test_put(chunk_store, finger_path)
    if get:
        print 'start to test read'
        test_get(chunk_store, finger_path)

if __name__ == '__main__':
    start_test()


Sargodha Road -5 Kanal Commercial Land Available For Sale IN Faisalabad. Prise. 150000000. Commercial Land available for Sale Location: panj-poori Main Sargodha Road Faisalabad Size: 5 Kanal.
Kohinoor City - Golden Chance For Investors IN Faisalabad. Prise. 3000000. Property Overview Ideal Rented Shops available for Investment Location: Kohinoor 1 Plaza, Jarranwala Road.


text:
Trial for the Shadow Youth Team at Barnfield Training Centre
Are you male and aged between 16 and 18 years old?
Have you ever wanted to represent a professional football club?
Have you ever wanted the chance to play against other professional clubs week in, week out?
Have you ever wondered what it would be like to play at the first team training ground?
If the answer is 'yes' and you have a real desire to progress through our genuine player pathway, then head down to the Shadow Youth Team trials at Barnfield Training Centre on Wednesday 1st June!
What is the Shadow Youth Team?
Burnley FC in the Community and Nelson & Colne College have joined forces to create the BFC Shadow Youth Team. This exciting programme gives talented young players – aged between the ages of 16 and 18 – the chance to combine academic studies with practical football experience. The programme is designed to bridge the gap between grass roots and academy football.
Shadow Youth Team players will train daily and play on a competitive basis – an experience that mirrors that of football academies nationwide; academies that SYT players may themselves progress onto. In addition to football training, players will also complete a BTEC Level 3 Extended Diploma in Sport with the support and guidance of the highly-skilled teaching staff at Nelson & Colne College.
The Shadow Youth Team First Team plays in the PLFL. This is a league as close to academy football as it is possible to play in, as the league is accessible solely to Premier League and Football League Clubs. Each league hosts a demanding, high standard of football and aims to act as a vehicle for players to progress onto the Burnley FC's Academy, Under 18s Youth Team, Under 21 Development Squad or even the Burnley FC's First Team.
We provide players with the skills required to help them progress to a higher standard of both education and football, as well as the necessary experience to work in community football coaching and other areas within the sports industry. Players will also receive training in football coaching, (leading to FA Coaching badges) emergency aid and safeguarding issues and practice. All players are provided with Burnley Football Club training kit, which is provided free of charge.
All courses are staffed by fully qualified professionals, both on and off the field. This allows flexibility for students to choose from a combination of pathways to match their ability, aptitude, interests and aspirations.
Burnley v Hull 2016[/caption]
The BFC Shadow Youth Team is a fantastic opportunity for young people keen to develop their talent on the football pitch and find a route into a career in football coaching, the leisure/sports industry or university.
Shadow Youth Team Trials:
Location: Burnley Football Club's Barnfield Training Centre (on the 3G pitches), Burnley Rd, Padiham, Burnley BB12 8UA
Date: Wednesday 1st June 2016
To register for the trial, please complete the form below:
Burnley FC Shadow Youth Team - TRIAL SIGN UP
House/Flat number and Street
Please make sure this is an active email as we will contact you regarding the trials.
Current School *
Current School/Group Year *
You must be either leaving high school in June/July 2018 or be in your first year at college.
Are you predicted to achieve 5 or more GCSEs A*- C (inc Maths & English) *
Playing Position
Please choose the trial date you wish to attend
Wednesday 15th February 2017, 12-3pm (Half Term) – Nelson & Colne College
Monday 20th March 2017, 6-8pm – Nelson & Colne College
Wednesday 31st May 2017, 12-3pm (Half Term) – Nelson & Colne College*
Monday 10th July 2017, 12-3pm – Nelson & Colne College*
*Trail venue dates are subject to change
Previous Playing Experience


Waist Bags, which are the important accessories of the 90s, have been reinterpreted by the most ambitious brands and designers of the fashion world nowadays. Different from the ones in the 90s, there are more modest models, the ones that can be used with thin chains or leather belts and also can be used as clutches with removal hangers. Using waist bags in clutch style seems to be a major factor for becoming trendy again after about 25-30 years.
Unlike many years ago, the fluffy waist bag models are designed with modern lines in mind. In addition, the inner section of the waist bags is simple and consists of several divisions. Therefore, it becomes one of the alternatives that women use during their daily lives. In addition, the waist bags are among the indispensables of women, who are anxious to forget their bags. Both locked and zippered alternatives help you to make your daily life more comfortable and safe. Women waist bags in different colors and models can be found on Sefamerve.com pages.
It is possible to highlight sportswear with waist bag combinations. Waist bags are also very common in international fashion. The new generation of waist bags created by the designers has become stylish enough to look great even with high-quality coats or trench coats that complement the evening dress as well as day-to-day use like in the 90s. Matching your combinations with waist bag is very important as there is a very thin line between being stylish and out-of-fashion.
One of the only pieces you can create a stylish combination with waist bags is jeans. You can catch the sporty elegance look with variety of jeans. Color choices in waist bags are also very important while wearing jeans. Your choice of colorful waist bag with sporty clothes gives good results. In addition, using it with high waist trousers is among the most comfortable bag models. You will get noticed by wearing matching shoes with your waist bag.
Nowadays, waist bags are commonly used as crossbody bags. To look more trendy with long blazers or straight jeans, you may prefer wallet size or classic cut waist bag models. Women who like baggy clothes can make their waists look more narrow by taking their waist bags to the upper side of their belly.


text:
Q: Linq Select Statement slow when getting COUNT I am trying to get a total record count from the below Method using EntityFramework and Linq. It is slow to return a count.
public static int totalTracking(int id)
{
   using (var ctx = new GPEntities())
   {
      var tr = ctx.Tracking
                   .Where(c => c.clientID == Config.ClientID)
                   .Where(c => c.custID == id)
                   .Where(c => c.oOrderNum.HasValue)
                  .ToList();
      return tr.Count();
   }
}

A: You can grossly simplify things and just use the Count Extension method
Have you tried:
public static int totalTracking(int id)
{
    using (var ctx = new GPEntities())
    {
        return ctx.Tracking.Count(
                  c => c.clientID == Config.ClientID &&
                       c.custID == id &&
                       c.oOrderNum.HasValue);
    }
}

A: Remove the call .ToList().  It forces the query to pull the entire results across to the client.
By removing this, and just calling .Count() directly on the results of tr (without ToList()), the Count() becomes part of the query itself, and executed remotely, which will dramatically simplify this:
public static int totalTracking(int id)
{
    using (var ctx = new GPEntities())
    {
        var tr = ctx.Tracking
            .Where(c => c.clientID == Config.ClientID)
            .Where(c => c.custID == id)
            .Where(c => c.oOrderNum.HasValue);

        // This can be added above, or left here - the end result is the same
        return tr.Count();
    }
}

A: You can simplify the query significantly:
using (var ctx = new GPEntities())
{
    return ctx.Tracking
        .Where(c => c.clientID == Config.ClientID)
        .Where(c => c.custID == id)
        .Where(c => c.oOrderNum.HasValue)
        .Count();
}

When you call ToList this will trigger materialization, so query will be issued to the database and all the columns will be retrieved. The actual count would happen on the client.
If you do just Count, without ToList it will issue query when you call Count and server will return just one number, instead of a table.
This is not that critical for performance, but I think the code would look a little nice without that many Where:
using (var ctx = new GPEntities())
{
    return ctx.Tracking
        .Where(c =>
            c.clientID == Config.ClientID &&
            c.custID == id &&
            c.oOrderNum.HasValue)
        .Count();
}

or even
using (var ctx = new GPEntities())
{
    return ctx.Tracking
        .Count(c =>
            c.clientID == Config.ClientID &&
            c.custID == id &&
            c.oOrderNum.HasValue);
}


text:
Email: admin@advocacyiowa.com
Threase Harms
Maddie Wilcox
Bob Rafferty
Kayleigh Rivera
AS Mission
AS Philosophy
Why Advocacy Strategies
Social Media Electioneering Statement
Public Relations/Media
Reputation Development
Iowa Caucuses
Legislative Calendars
We Are Connected. We are well connected with local, state and federal policymakers, public officials, state agencies, community leaders, state regulatory boards, non-profits, and businesses across the Iowa and beyond. Our team utilizes every opportunity to build relationships with everyone from elected officials to grassroots advocates.
Our Experience is Diverse. Combined, our lead staff members have worked for leading nonprofits, multi-client lobbying firm, prominent community development organizations, the State of Iowa, a Fortune 50 company, the Governor's Office and in the Iowa Senate.
We Are Nonpartisan. Unlike many government relations and public affairs firms, we have friends on both sides of the aisle. We build relationships with a wide variety of people to make progress on the issues we embrace for our clients. We're open and honest in our communication and we carefully position our messages to build consensus among both Democrats and Republicans. Our ultimate responsibility is to our clients, not to the advancement of a political party.
We Want to Serve You. We are committed to building the strongest professional relationship with each of our clients. Our knowledge and experience affords us the capacity to represent clients with exceptional service. The AS team knows and believes whole-heartedly in the issues we represent on behalf of each of our clients.
The Advocacy Strategies team takes deep pride in representing the best interests of our clients, not the advancement of a political party. We are non-partisan and work with both sides…
Advocacy Strategies has successfully developed and implemented public affairs and issue campaigns across Iowa for several years. Our relationships with organizations, businesses and government entities afford us the ability to…
Advocacy Strategies effectively uses earned, paid, and owned media opportunities to get your message to the right audience through both traditional and unconventional means. With your expertise, we help develop…
An organization's reputation is the most important asset it can possess. A strong reputation opens doors, increases membership, brings financial gains, and allows for successful government advocacy. Many times, simple…
Due to Iowa's unique place in American politics, Advocacy Strategies has dedicated a significant portion of our business and resources to engaging Presidential candidates during the caucus process. We have…
© 2020 Advocacy Strategies