Using a Neural Network to Build a Phrase Atom Parser for Biblical Hebrew

by Mark Klooster | October 2, 2020 | ETCBC

This notebook publishes the results of my internship the ETCBC (Eep Talstra Centre for Bible and Computer). The internship project involved creating a phrase atom parser for Hebrew text by building a machine learning model. The phrase atom parser contributes to the joint project between the ETCBC and the Theological Seminary at Andrews University, which is called the Creating Annotated Corpora of Classical Hebrew Texts project (CACCHT). The CACCHT project is currently broadening their scope by adding more text corpora to their database. A few years ago, the research group created a new Text-Fabric module containing the Dead Sea Scrolls (DSS) with morphological encoding. The digitized DSS and their morphological annotations were provided by Martin Abegg. However, Abegg's encoding system is very different from the other modules encoded by the ETCBC (such as the BHSA package or the extra-biblical package). Therefore, the CACCHT project has been working on converting all morphological features, thereby using a bottom-up approach (i.e. converting word features first, then phrase features, clause features, and so on).

The encoding of word features is well underway and the project is about to move on to encoding phrase atom features. To start this, it should first be known which words constitute a phrase atom. However, Abegg's encoding does not have information about phrase atom boundaries in the dataset. Therefore, the phrase atom boundaries have to be constructed first. The construction or prediction of phrase atom boundaries is the project of this notebook.

The reason this project predicts phrase atom boundaries instead of phrase boundaries is that whereas phrases might be separated by words of another phrase, phrase atoms consist of continuous words. Take for example this English sentence:

'A clearer example has never been given'.

The adverb and adverbial phrase 'never' split the verbal phrase 'has been given' in two smaller phrase atoms, namely 'has' and 'been given'. As phrases that are interrupted by other phrases are harder to detect, it is more logical to try and find phrase atom boundaries first. This agrees with the bottom-up approach that is used in the CACCHT project. (In another project, phrase atoms found here could be used to find complete phrases).

Determining things like phrase atom boundaries used to be done manually. However, this notebook uses a different approach. Phrase atom boundaries will be deducted and predicted based on information on word level. The data set of the BHSA already has information on all levels, including phrase atom boundaries, while the DSS data set has only information on word level. The data of the BHSA will be used as training data for a neural network. A neural network is an example of a machine learning algorithm which has a pattern-based approach. This means that rather than feeding rules to an algorithm to predict phrase atom boundaries, the networks will find patterns between input (on word level) and the output (phrase atom boundaries), to come up with these rules itself. These rules, in turn, will be applied on word-level input of the DSS to predict phrase atom boundaries.

The neural network will be trained to find statistical patterns between part of speech - a word-level feature that has been encoded for the DSS already - and phrase atom boundaries. The deep learning model is trained on 90 per cent of the chapters of the BHSA, of which the phrase atom boundaries (the output) are known. As input, the model takes part of speech (e.g. noun, verb, adjective, etc.). The output consists of a 'p' or an 'x', indicating, respectively, whether the word is the end of a phrase atom, or not.

The trained model is then tested on the remaining 10 per cent of the BHSA, which is called the test set. The mistakes are evaluated in detail, to get insight into specific cases in which the model is incorrect. The evaluation has led to several alterations in the input data, which in turn have improved the accuracy of the model. The model below only shows the final script of the most accurate model. The following alterations were made based on the evaluation of simpler models:

  1. The scope of the training set was limited to Hebrew words only. This means that Aramaic parts were left out. As Aramaic has different grammatical conventions, it would not help the prediction of phrase atom boundaries in Hebrew. For example, in Aramaic, the part of speech 'article' comes after the noun, while it precedes the noun in Hebrew. Therefore, in Aramaic, the article would often be the last word of a phrase atom, while this would be theoretically impossible in Hebrew. Moreover, the target scroll of the DSS for this experiment, the Qumran Community Scroll (1QS), is a Hebrew text.
  2. According to the Abegg encoding and the lastest ETCBC convention (applied in the extra-biblical package but not in the BHSA package), pronominal suffixes are to be treated as separate, individual words. Therefore, in the pre-processing phase of the data of the BHS, all suffixes are separated from their base words. In some cases, the suffix formed a separate, individual phrase atom. Suppose, for example, a verb with an object suffix. The verb and the suffix are in reality separate phrase atoms (the verb is the predicate, while the suffix is the object of the broader clause). For those and similar cases the output (phrase atom boundary) is re-evaluated and adjusted accordingly.
  3. Previous models were especially inaccurate when the part of speech was a noun, adverb, verb, proper noun, or an adjective. Interestingly, these five parts of speech can have a construct state in Hebrew, in which case it is closely connected to the following word. As a result of this, these cases are rarely the end of a phrase atom. Adding extra information about the state to these parts of speeches helps the model to predict more accurate in these cases. These alterations combined made the accuracy of the model on the test set of the BHSA jump from 89 per cent to 97 per cent. The accuracy of the most efficient model on 1QS reached almost 95 per cent.

Moreover, whether a word is the end of a phrase atom or not, cannot be deducted from its part of speech alone. When dealing with language, context is crucial. Therefore, as is common in the practice of natural language processing, the model works with input and output sequences instead of single input and output. This is called a sequence to sequence model (seq2seq). After testing sequence lengths ranging from 5 to 20, the most ideal and efficient sequence length was 9. Therefore, the model works with sequences of length 9. This means that the input consists of 9 consecutive parts of speech and the output of 9 phrase atom boundary indicators (x’s or p’s).

In the script below, the following steps are taken:

  1. The input and output data are collected and pre-processed for the network.
  2. The network is defined, compiled, and fit to the training data.
  3. The model’s performance on the test set is calculated and evaluated extensively.
  4. The input and output data for the DSS scroll (1QS) is collected and pre-processed.
  5. The model is run on 1QS and the results are evaluated.

Each step is explained in more detail below.

First, the necessary libraries and modules are imported. This includes the Tensorflow package to build neural networks and the Text-Fabric package containing the BHSA database.

It is recommended to run the model on a GPU instead on a CPU because that is much faster (depending on the specifications of the GPU of course). In order to do this, a virtual environment needs to be created. This might be a bit complicated but there are various good explanations and tutorials available online. See, for example, this tutorial on how to install a Tensorflow-GPU: https://www.youtube.com/watch?v=tPq6NIboLSc

In [37]:
# imports the necessary libraries and modules
import collections
import pandas as pd
import numpy as np
from sklearn.utils import shuffle

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, LSTM, Dense
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.optimizers import Adam

# imports the ETCBC database of the BHSA
from tf.app import use
A = use('bhsa:hot', hoist=globals())
rate limit is 5000 requests per hour, with 5000 left for this hour
	connecting to online GitHub repo annotation/app-bhsa ... connected
TF-app: C:\Users\Mark/text-fabric-data/annotation/app-bhsa/code
data: C:\Users\Mark/text-fabric-data/etcbc/bhsa/tf/c
data: C:\Users\Mark/text-fabric-data/etcbc/phono/tf/c
data: C:\Users\Mark/text-fabric-data/etcbc/parallels/tf/c
Text-Fabric API: names N F E L T S C TF directly usable

First, it is important to collect all words of the BHSA that are suitable for this project's purposes. As the ideal sequence length is 9, it is useful to collect these words in ranges longer than the sequence length. Moreover, there has to be a certain amount of ranges so that a random 10 per cent (for the test set) is representative of all genres throughout the Hebrew Bible. Therefore, the entire Hebrew Bible is split up into 929 smaller blocks containing consecutive words from exactly one chapter. The next step is to delete all words that are not Hebrew but Aramaic (to get a more homogeneous dataset). This is done in two steps:

  1. Each block is checked for the presence of Aramaic words, which are then deleted.
  2. At the position of the gap left by the deleted Aramaic words, the block is split into two new blocks (or more if the block has multiple gaps).

This way, the resulting 927 blocks consist of only consecutive words.

Moreover, in Hebrew writing, when a word has an article that has and a prefixed preposition, the article is elided. Therefore, it is no longer visible, except in vocalised texts (such as the 10th-century Masoretic Text). As BHSA is based on an edition of the Masoretic Text (the BHS), it includes the information about 'hidden' articles. As the goal of this research is to predict phrase atom boundaries for the Dead Sea Scrolls - which are unvocalised texts - this added information is ignored and deleted. In the dataset of the BHSA, these words have an empty string ('') as the value for the feature g_cons, the transliterated consonantal presentation of words.

Also, when a word has a pronominal suffix, in the pre-processing phase, this suffix will be separated from that word and considered as a word on its own. This way, the pronominal suffix becomes similar to the 'normal' personal pronouns. More importantly, regarding the pronominal suffix as a separate, individual word matches the encoding of the DSS, the target text set.

In [3]:
def create_hebrew_blocks():
    
    hebrew_blocks = collections.defaultdict(list)
    chapters = [chap for chap in F.otype.s("chapter")]
    
    block_index = 0
    # iterates over all chapters
    for chap in chapters:
        chap_words = []
        
        # iterates over and collects all words except the elided-he
        # adds an extra word if there is a pronominal suffix
        for word in L.d(chap, "word"):
            if F.g_cons.v(word) != '':
                chap_words.append(word)
                if F.prs.v(word) not in ['absent', 'n/a']:
                    chap_words.append(word)
        
        # splits chapter into blocks when it encounters non-Hebrew words 
        for node in range(len(chap_words)):
            if F.language.v(chap_words[node]) == 'Hebrew':
                hebrew_blocks[block_index].append(chap_words[node])
            elif F.language.v(chap_words[node]) != 'Hebrew':
                if F.language.v(chap_words[node - 1]) == 'Hebrew':
                    block_index += 1
                    continue
                else:
                    continue
        block_index += 1
    
    
    # shuffles the blocks randomly
    indexes = shuffle(list(hebrew_blocks.keys()))
    hebrew_blocks = {k: hebrew_blocks[k] for k in indexes}

    return hebrew_blocks

To give an example of what the 'hebrew blocks' look like, here are the first ten:

In [4]:
hebrew_blocks = create_hebrew_blocks()
[" ".join([str(i) for i in T.sectionFromNode(words[0])]).replace("_", " ") + "-" + str(T.sectionFromNode(words[-1])[2]) for words in hebrew_blocks.values()][:10]
    
Out[4]:
['Daniel 10 1-21',
 'Judges 5 1-31',
 'Nahum 2 1-14',
 'Judges 4 1-24',
 'Psalms 110 1-7',
 '2 Samuel 22 1-51',
 'Judges 6 1-40',
 '1 Kings 18 1-46',
 'Psalms 136 1-26',
 'Micah 1 1-16']

Now that the dataset is defined, the next step is to collect the input and output data. For these purposes, the following three functions are used. The first function, get_pos, returns the part of speech when the input is a word and extends the part of speech - if needed - by the word's state. The second function returns a 'p' when the word is the end of a phrase atom, and an 'x' when it is not. The third function iterates through each block and all words and adds the input and output to each word. The resulting blocks, that now also contain input and output data, are split into training blocks and test blocks according to a predefined ratio of 9:1.

In [5]:
def get_pos(w):
    # customises the part of speech for a word and returns it
    
    # when a word has a suffix and a defined state, 
    # its part of speech is extended by '_c' indicating a construct state.
    if F.prs.v(w) not in ['absent', 'n/a'] and F.st.v(w) != "NA":
        pos = str(F.sp.v(w)) + "_c"
        
    # in all other cases, when a word has a state and no suffix, the 
    # part of speech is extended by the state
    elif F.st.v(w) != "NA":
        pos = str(F.sp.v(w)) + "_" + str(F.st.v(w))
        
    # when the word has neither state nor suffix, its part of speech remains unchanged
    else:
        pos = str(F.sp.v(w))

    return pos
In [6]:
def position_in_phrase_atom(w):
    # returns an 'p" when a word is the end of a phrase atom and an 'x' if it is not.

    ph_atom = L.u(w, 'phrase_atom')[0]
    words_in_ph_atom = L.d(ph_atom, "word")
    
    # when the word is the end of the phrase atom
    if w == words_in_ph_atom[-1]:
        ph_atom_end = 'p'
    
    # when it is not
    else:
        ph_atom_end = "x"

    return ph_atom_end
In [7]:
def collect_data(hebrew_blocks, ratio=0.9):

    data = {}

    # iterates through all blocks
    for block_idx, block_words in hebrew_blocks.items():
        block_data = []
        done = False

        # iterates through all words
        for w in block_words:
            
            # looks up the phrase to find the phrase function later
            phrase = L.u(w, "phrase")[0]

            # checks whether a word has a suffix
            if done == True:
                done = False
                continue

            # when a word appears twice in a block, the second one represents the suffix
            # the following lines make sure that the suffix gets a fitting part of speech
            # (prps) and phrase atom position

            elif block_words.count(w) == 2:
                # if the word has a suffix the data collection will happen for both the
                # word and the suffix. The second time the word passes the loop, it is ignored
                # by setting the bolean 'done' to true.
                done = True

                # if the phrase function of the word indicates a SUBJECT or OBJECT suffix
                if F.function.v(phrase)[-1] in "SO":
                    
                    # if it is the end of a phrase atom, the suffix becomes a separte phrase atom
                    if position_in_phrase_atom(w) == 'p':
                        block_data.append(['p', get_pos(w), w])
                        block_data.append(['p', 'prps', w])
                    
                    # if it is not, both original word and suffix remain 'x' for the same phrase atom
                    else:
                        block_data.append(['x', get_pos(w), w])
                        block_data.append(['x', 'prps', w])

                # if the phrase function does not indicate a subject or object suffix
                # the suffix takes over the phrase atom position form its base word.
                # If it becomes the end of phrase atom because of this, the base word gets an 'x'
                else:
                    if position_in_phrase_atom(w) == 'p':
                        block_data.append(['x', get_pos(w), w])
                        block_data.append(['p', 'prps', w])
                    else:
                        block_data.append(['x', get_pos(w), w])
                        block_data.append(['x', 'prps', w])

            # in all other cases, without suffixes involved, the phrase atom position and part of speech
            # are determined in the regular way
            else:
                block_data.append([position_in_phrase_atom(w), get_pos(w), w])
        data[block_idx] = block_data
    
    # shuffles the data randomly by block index
    data = {k: data[k] for k in shuffle(list(data.keys()))}
    
    # splits the shuffled data into train blocks and test blocks according to the preset ratio
    keys = list(data.keys())
    train_blocks = {k: data[k] for k in keys[:int(len(keys) * ratio)]}
    test_blocks = {k: data[k] for k in keys[int(len(keys) * ratio):]}

    return train_blocks, test_blocks

This is what the data of the first ten words of the test blocks looks like:

In [8]:
train_blocks, test_blocks = collect_data(hebrew_blocks)
[words for words in train_blocks.values()][0][:10]
Out[8]:
[['p', 'verb', 226065],
 ['x', 'prep', 226066],
 ['p', 'prps', 226066],
 ['p', 'subs_a', 226067],
 ['p', 'conj', 226068],
 ['p', 'subs_a', 226069],
 ['p', 'verb', 226070],
 ['p', 'subs_a', 226071],
 ['p', 'verb', 226072],
 ['p', 'advb', 226073]]

The resulting train and test blocks consist of blocks containing the following three features for each word:

  1. The part of speech of that word
  2. The corresponding value for its position in a phrase atom (an 'x' or a 'p')
  3. The word's node, which is an integer that is unique for each word and connects the word to the structure of the database. This helps to evaluate the results on a word level.

The following two functions create the input and output sequences for the train and test set. In addition to this, each unique input and output value for every single word is collected in the input and output vocabularies. Lastly, the maximum length of the input and output sequences is calculated. These parameters are useful for choosing the dimensions of the neural network.

In [9]:
def prep_train_data(train_blocks):
    ip_pos_seq = []
    op_ph_seq = []
    ip_pos_voc = set()
    op_ph_voc = set()
    
    # iterates over all training blocks
    for train_word_nodes in train_blocks.values():
        
        # iterates over all words except the last 8, 
        # this way the last sequence won't run out of words
        # and have exactly 9 words 
        for w in range(len(train_word_nodes[:-8])):
            
            # the following lines collect the training data 
            # for 9 consecutive words in a list
            
            # input data: part of speech
            pos = [train_word_nodes[w][1] for w in range(w, w + 9)]
            
            # output data: position in phrase atom
            ph_atom = [
                train_word_nodes[w][0] for w in range(w, w + 9)
            ]
            
            # adds the start and stop symbol
            ph_atom = ['\t'] + ph_atom + ['\n']
            
            # collects the input and output for this word (w)
            # in a list
            ip_pos_seq.append(pos)
            op_ph_seq.append(ph_atom)
            
            # collects all unique input and output values in vocabularies
            for p in pos:
                ip_pos_voc.add(p)
            for ph in ph_atom:
                op_ph_voc.add(ph)
                
    # sorts the vocabuluries and converts them into lists
    ip_pos_voc = sorted(list(ip_pos_voc))
    op_ph_voc = sorted(list(op_ph_voc))
    
    # calculated the the maximum lenght of input and output sequences
    max_len_ip = max([len(pos) for pos in ip_pos_seq])
    max_len_op = max([len(ph) for ph in op_ph_seq])
    
    # shuffles all sequences randomly
    ip_pos_seq, op_ph_seq = shuffle(ip_pos_seq, op_ph_seq)

    return ip_pos_seq, op_ph_seq, ip_pos_voc, op_ph_voc, max_len_ip, max_len_op

This is what the first four input and output sequences look like.

In [10]:
ip_pos_seq, op_ph_seq = prep_train_data(train_blocks)[:2]
for i in range(0, 4):
    print(ip_pos_seq[i])    
    print(op_ph_seq[i])
['nmpr_a', 'conj', 'verb', 'art', 'adjv_a', 'conj', 'art', 'adjv_a', 'conj']
['\t', 'p', 'p', 'p', 'x', 'x', 'x', 'x', 'x', 'x', '\n']
['subs_c', 'prps', 'prde', 'subs_c', 'subs_c', 'nmpr_a', 'prep', 'subs_c', 'prps']
['\t', 'x', 'p', 'p', 'x', 'x', 'p', 'x', 'x', 'p', '\n']
['prps', 'prep', 'nmpr_a', 'subs_c', 'prps', 'nega', 'verb', 'subs_a', 'prep']
['\t', 'p', 'x', 'p', 'x', 'p', 'p', 'p', 'p', 'x', '\n']
['prep', 'prps', 'prep', 'nmpr_a', 'subs_c', 'prps', 'conj', 'verb', 'prps']
['\t', 'x', 'p', 'x', 'p', 'x', 'p', 'p', 'p', 'p', '\n']
In [11]:
def prep_test_data(test_blocks):
    
    ip_pos_test = {}
    op_ph_test = {}
    
    for block_idx, test_word_nodes in test_blocks.items():
        
        ip_pos_test_block = []
        op_ph_test_block = []
        
        for w in range(len(test_word_nodes[:-8])):
            
            # collects test data
            pos = [test_word_nodes[w][1] for w in range(w, w + 9)]
            ph_atom = [test_word_nodes[w][0] for w in range(w, w + 9)]
            
            ip_pos_test_block.append(pos)
            op_ph_test_block.append(ph_atom)
            
        ip_pos_test[block_idx] = ip_pos_test_block
        op_ph_test[block_idx] = op_ph_test_block

    return ip_pos_test, op_ph_test

The data is then transformed because the neural network can only handle numerical data. To convert the numeric data back to the original data, the following dictionaries are created to map the input and output vocabularies to integers.

In [12]:
def create_dicts(ip_pos_voc, op_ph_voc):
    
    # maps the input vocabulary of part of speech to indeces
    ip_idx2pos = {}
    ip_pos2idx = {}

    for k, v in enumerate(ip_pos_voc):
        ip_idx2pos[k] = v
        ip_pos2idx[v] = k
    
    # maps the output vocabulary of phrase atom position to indeces
    op_idx2ph = {}
    op_ph2idx = {}

    for k, v in enumerate(op_ph_voc):
        op_idx2ph[k] = v
        op_ph2idx[v] = k

    return ip_idx2pos, ip_pos2idx, op_idx2ph, op_ph2idx

Because the input and output data are categorical, the data is being one-hot encoded. This means that each input value is represented by an array containing as many values as there are values in the input variable. The arrays contain zero's, with a 1 on the place of the integer value of the input. An input for a single word might look like

        [1, 0, 0, ... , 0, 0] 

which corresponds with the integer value 1 of the input vocabulary, which is 'adjv_a', an adjective with an absolute state.

In [13]:
def one_hot_encode(max_len_ip, max_len_op, ip_pos_voc, op_ph_voc, ip_pos2idx,
                   op_ph2idx, ip_pos_test, op_ph_seq):
    
    # creates three-dimensional numpy arrays
    one_hot_ip = np.zeros(shape=(len(ip_pos_test), max_len_ip, len(ip_pos_voc)),
                      dtype='float32')
    one_hot_op = np.zeros(shape=(len(ip_pos_test), max_len_op, len(op_ph_voc)),
                      dtype='float32')
    target_data = np.zeros((len(ip_pos_test), max_len_op, len(op_ph_voc)),
                           dtype='float32')

    for i in range(len(ip_pos_test)):
        for k, ps in enumerate(ip_pos_test[i]):
            one_hot_ip[i, k, ip_pos2idx[ps]] = 1

        for k, ph in enumerate(op_ph_seq[i]):
            one_hot_op[i, k, op_ph2idx[ph]] = 1
            
            # the decoder target data is ahead one timestep and does 
            # not include the start symbol
            if k > 0:
                target_data[i, k - 1, op_ph2idx[ph]] = 1

    return one_hot_ip, one_hot_op, target_data

The following function creates the structure of the neural network, which has an encoder-decoder architecture. The encoder consists of an input layer that has as many cells as the size of the input vocabulary of parts of speech and two LSTM layers which both have 250 cells. The input layer of the decoder has as many cells as the size of the output vocabulary of x's and p's. The decoder also has a LSTM layer of 250 cells, and a dense layer of exactly as many cells as the output vocabulary. The dense layer uses the softmax activation to normalise the outputs into a probability distribution.

In [14]:
def define_LSTM_model(ip_pos_voc, op_ph_voc):
    
    # encoder model
    encoder_input = Input(shape=(None, len(ip_pos_voc)))
    encoder_LSTM = LSTM(250,
                        activation='relu',
                        return_state=True,
                        return_sequences=True)(encoder_input)
    encoder_LSTM = LSTM(250, return_state=True)(encoder_LSTM)
    encoder_outputs, encoder_h, encoder_c = encoder_LSTM
    encoder_states = [encoder_h, encoder_c]
    
    # decoder model
    decoder_input = Input(shape=(None, len(op_ph_voc)))
    decoder_LSTM = LSTM(250, return_sequences=True, return_state=True)
    decoder_out, _, _ = decoder_LSTM(decoder_input,
                                     initial_state=encoder_states)
    decoder_dense = Dense(len(op_ph_voc), activation='softmax')
    decoder_out = decoder_dense(decoder_out)

    model = Model(inputs=[encoder_input, decoder_input], outputs=[decoder_out])

    model.summary()

    return encoder_input, encoder_states, decoder_input, decoder_LSTM, decoder_dense, model

The model's architecture is defined and the next step is to feed the data into the model. First, stopping conditions are defined. When these are met, the model is finished and stops running. Then, the optimiser and loss function are set. Finally, the model is fed the training data and begins fitting itself to the training data.

In [15]:
def compile_and_train(model, one_hot_ip, one_hot_op, target_data, batch_size,
                      epochs, val_split):
    # defines stop conditions
    callback = EarlyStopping(monitor='val_loss',
                             patience=patience,
                             verbose=0,
                             mode='auto')
    
    # defines optimizer
    adam = Adam(lr=0.0008, beta_1=0.99, beta_2=0.999, epsilon=0.00000001)
    
    # compiles the model
    model.compile(optimizer=adam,
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    
    # fits the model to the training data
    model.fit(x=[one_hot_ip, one_hot_op],
              y=target_data,
              batch_size=batch_size,
              epochs=epochs,
              validation_split=val_split,
              callbacks=[callback])

    return model

The following script sets all parameters and then runs all functions mentioned above. The data is collected, created, pre-processed and the network is defined and compiled. In the end, the model is fit to the training data.

In [16]:
batch_size = 1024
epochs = 150
val_split = 0.05
patience = 3
ratio = 0.9

# collects the relevant parts of the Hebrew Bible
hebrew_blocks = create_hebrew_blocks()

# collects input and output data and creates training and test sets
train_blocks, test_blocks = collect_data(hebrew_blocks, ratio)

# creates training sequences
ip_pos_seq, op_ph_seq, ip_pos_voc, op_ph_voc, max_len_ip, max_len_op = prep_train_data(
    train_blocks)

# creates test sequences
ip_pos_test, op_ph_test = prep_test_data(test_blocks)

# converts data to numerical data
ip_idx2pos, ip_pos2idx, op_idx2ph, op_ph2idx = create_dicts(
    ip_pos_voc, op_ph_voc)

# one-hot encodes the data
one_hot_ip, one_hot_op, target_data = one_hot_encode(max_len_ip, max_len_op,
                                                     ip_pos_voc, op_ph_voc,
                                                     ip_pos2idx, op_ph2idx,
                                                     ip_pos_seq, op_ph_seq)

one_hot_test_data = {
    block:
    one_hot_encode(max_len_ip, max_len_op, ip_pos_voc, op_ph_voc, ip_pos2idx,
                   op_ph2idx, ip_pos_test[block], op_ph_seq)[0]
    for block in test_blocks
}

# defines the model
encoder_input, encoder_states, decoder_input, decoder_LSTM, decoder_dense, model = define_LSTM_model(
    ip_pos_voc, op_ph_voc)

# fits the model to the training data
model = compile_and_train(model, one_hot_ip, one_hot_op, target_data,
                          batch_size, epochs, val_split)
Model: "model_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, None, 18)     0                                            
__________________________________________________________________________________________________
lstm_1 (LSTM)                   [(None, None, 250),  269000      input_1[0][0]                    
__________________________________________________________________________________________________
input_2 (InputLayer)            (None, None, 4)      0                                            
__________________________________________________________________________________________________
lstm_2 (LSTM)                   [(None, 250), (None, 501000      lstm_1[0][0]                     
                                                                 lstm_1[0][1]                     
                                                                 lstm_1[0][2]                     
__________________________________________________________________________________________________
lstm_3 (LSTM)                   [(None, None, 250),  255000      input_2[0][0]                    
                                                                 lstm_2[0][1]                     
                                                                 lstm_2[0][2]                     
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, None, 4)      1004        lstm_3[0][0]                     
==================================================================================================
Total params: 1,026,004
Trainable params: 1,026,004
Non-trainable params: 0
__________________________________________________________________________________________________
Train on 385840 samples, validate on 20308 samples
Epoch 1/150
385840/385840 [==============================] - 20s 52us/step - loss: 0.3154 - accuracy: 0.8170 - val_loss: 0.2831 - val_accuracy: 0.8295
Epoch 2/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.2408 - accuracy: 0.8665 - val_loss: 0.2051 - val_accuracy: 0.8944
Epoch 3/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.1641 - accuracy: 0.9204 - val_loss: 0.1313 - val_accuracy: 0.9367
Epoch 4/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.1078 - accuracy: 0.9478 - val_loss: 0.0913 - val_accuracy: 0.9547
Epoch 5/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0856 - accuracy: 0.9572 - val_loss: 0.0823 - val_accuracy: 0.9591
Epoch 6/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0774 - accuracy: 0.9734 - val_loss: 0.0735 - val_accuracy: 0.9821
Epoch 7/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0715 - accuracy: 0.9828 - val_loss: 0.0697 - val_accuracy: 0.9825
Epoch 8/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0677 - accuracy: 0.9836 - val_loss: 0.0680 - val_accuracy: 0.9835
Epoch 9/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0658 - accuracy: 0.9843 - val_loss: 0.0661 - val_accuracy: 0.9840
Epoch 10/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0643 - accuracy: 0.9848 - val_loss: 0.0649 - val_accuracy: 0.9846
Epoch 11/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0630 - accuracy: 0.9853 - val_loss: 0.0628 - val_accuracy: 0.9854
Epoch 12/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0621 - accuracy: 0.9856 - val_loss: 0.0626 - val_accuracy: 0.9853
Epoch 13/150
385840/385840 [==============================] - 19s 50us/step - loss: 0.0615 - accuracy: 0.9858 - val_loss: 0.0629 - val_accuracy: 0.9855
Epoch 14/150
385840/385840 [==============================] - 20s 53us/step - loss: 0.0608 - accuracy: 0.9861 - val_loss: 0.0614 - val_accuracy: 0.9859
Epoch 15/150
385840/385840 [==============================] - 20s 51us/step - loss: 0.0601 - accuracy: 0.9864 - val_loss: 0.0612 - val_accuracy: 0.9860
Epoch 16/150
385840/385840 [==============================] - 21s 54us/step - loss: 0.0594 - accuracy: 0.9866 - val_loss: 0.0604 - val_accuracy: 0.9861
Epoch 17/150
385840/385840 [==============================] - 21s 55us/step - loss: 0.0590 - accuracy: 0.9868 - val_loss: 0.0598 - val_accuracy: 0.9865
Epoch 18/150
385840/385840 [==============================] - 21s 56us/step - loss: 0.0588 - accuracy: 0.9869 - val_loss: 0.0600 - val_accuracy: 0.9865
Epoch 19/150
385840/385840 [==============================] - 20s 53us/step - loss: 0.0583 - accuracy: 0.9871 - val_loss: 0.0589 - val_accuracy: 0.9868
Epoch 20/150
385840/385840 [==============================] - 19s 48us/step - loss: 0.0577 - accuracy: 0.9873 - val_loss: 0.0589 - val_accuracy: 0.9868
Epoch 21/150
385840/385840 [==============================] - 19s 48us/step - loss: 0.0576 - accuracy: 0.9873 - val_loss: 0.0591 - val_accuracy: 0.9868
Epoch 22/150
385840/385840 [==============================] - 19s 48us/step - loss: 0.0572 - accuracy: 0.9875 - val_loss: 0.0593 - val_accuracy: 0.9867

After 22 epochs, the stopping conditions were met and the model stopped training. It reached an accuracy of 98.67% on the validation set (5% of the training data that was set aside for self-evaluation). Although this is a decent result, it is more important to find out how accurate the model is on completely new data. This is where the test set, the 10% that was set apart at the beginning, comes in.

First, a few more functions are needed to be able to convert input data into predicted outcomes. The function prediction_dict converts the predicted sequences of 9 words into phrase atom boundary predictions for each individual word.

In [17]:
def encoder_decoder_model(encoder_input, encoder_states, decoder_LSTM, decoder_dense):
    # encoder inference model
    encoder_model_inf = Model(encoder_input, encoder_states)

    # decoder inference model
    decoder_state_input_h = Input(shape=(250, ))
    decoder_state_input_c = Input(shape=(250, ))
    decoder_input_states = [decoder_state_input_h, decoder_state_input_c]

    decoder_out, decoder_h, decoder_c = decoder_LSTM(
        decoder_input, initial_state=decoder_input_states)

    decoder_states = [decoder_h, decoder_c]

    decoder_out = decoder_dense(decoder_out)

    decoder_model_inf = Model(inputs=[decoder_input] + decoder_input_states,
                              outputs=[decoder_out] + decoder_states)

    return encoder_model_inf, decoder_model_inf

The function decode_seq() uses the trained model to predict output sequences. It takes one-hot encoded sequences of words as input.

In [18]:
def decode_seq(ip_seq, encoder_model_inf, decoder_model_inf, op_ph_voc,
               op_ph2idx, op_idx2ph):

    states_val = encoder_model_inf.predict(ip_seq)

    target_seq = np.zeros((1, 1, len(op_ph_voc)))
    target_seq[0, 0, op_ph2idx['\t']] = 1

    pred_ph = []
    stop_condition = False

    while not stop_condition:

        decoder_out, decoder_h, decoder_c = decoder_model_inf.predict(
            x=[target_seq] + states_val)

        max_val_index = np.argmax(decoder_out[0, -1, :])
        sampled_out_char = op_idx2ph[max_val_index]
        pred_ph.append(sampled_out_char)

        if (sampled_out_char == '\n'):
            stop_condition = True

        target_seq = np.zeros((1, 1, len(op_ph_voc)))
        target_seq[0, 0, max_val_index] = 1

        states_val = [decoder_h, decoder_c]

    return pred_ph

The function prediction_dict() converts the predicted outputs for sequences into predicted outputs for single words.

In [19]:
def prediction_dict(test_blocks, one_hot_test_data, op_ph_test):
    decision_dict = {}
    for block, block_seqs in test_blocks.items():
        
        decision_dict_block = collections.defaultdict(list)
        
        for seq_index in range(len(one_hot_test_data[block])):
            ip_seq = one_hot_test_data[block][seq_index:seq_index+1]
            
            pred_ph = decode_seq(ip_seq, encoder_model_inf, decoder_model_inf, op_ph_voc,
               op_ph2idx, op_idx2ph)
            if len(pred_ph[:-1]) == len(op_ph_test[block][seq_index]):
                for pred_index in range(len(pred_ph[:-1])):
                    decision_dict_block[seq_index + pred_index].append(pred_ph[:-1][pred_index])
        decision_dict[block] = decision_dict_block
    
    return decision_dict

The function safe_div() divides two numbers and returns the result. If the denominator is zero, it returns zero. This function comes in handy when calculating percentages in the evaluation later.

In [20]:
def safe_div(numerator, denominator):
    if denominator == 0:
        return 0
    
    else:
        return numerator / denominator

The following function runs all words in the test set through the model and counts the correct and false predictions. Of the latter, it also registers the corresponding part of speech to get insight into the performance of the model per input value.

In [21]:
def test_evaluation(test_blocks, decision_dict):
    correct_test = 0
    wrong_test = 0
    bible_section = []
    pos_dict = collections.defaultdict(lambda: collections.defaultdict(int))
    cross_dict = collections.defaultdict(lambda: collections.defaultdict(int))
    
    # iterates through all blocks
    for block in test_blocks:
        
        # iterates through all words
        for key in range(len(test_blocks[block])):
            w = test_blocks[block][key][2]
            
            # collects all predictions for the word (up to 9)
            data = collections.Counter(decision_dict[block][key])
            
            # determines the most common prediction
            pred = data.most_common(1)[0][0]
            
            # counts each possible combination of true and predicted output
            cross_dict[test_blocks[block][key][0]][pred] += 1
            
            # if the prediction is correct
            if test_blocks[block][key][0] == pred:
                correct_test += 1
            
            # if the prediciton is false
            else:
                wrong_test += 1
                
                # registers the exact location in the BHSA of the misprediction
                # along with information about the output
                bible_section.append(
                    str(w) + " " + T.sectionFromNode(w)[0].replace("_", " ") +
                    " " + str(T.sectionFromNode(w)[1]) + ":" +
                    str(T.sectionFromNode(w)[2]) + " " +
                    test_blocks[block][key][1] + " " +
                    test_blocks[block][key][0] + " " +
                    data.most_common(1)[0][0])
                
                # registers input corresponding with the misprediciton
                pos = test_blocks[block][key][1]
                pos_dict[pos][pred] = pos_dict[pos].get(pred, 0) + 1
                
    # creates an extensive evaluation of errors by part of speech
    eval_by_pos = {}
    for k in pos_dict.keys():
        total_pos = len([
            test_blocks[block][key][2] for block in test_blocks
            for key in range(len(test_blocks[block]))
            if test_blocks[block][key][1] == k
        ])
        total_pos_ph_x = len([
            test_blocks[block][key][2] for block in test_blocks
            for key in range(len(test_blocks[block]))
            if test_blocks[block][key][1] == k
            and test_blocks[block][key][0] == 'x'
        ])
        total_pos_ph_p = len([
            test_blocks[block][key][2] for block in test_blocks
            for key in range(len(test_blocks[block]))
            if test_blocks[block][key][1] == k
            and test_blocks[block][key][0] == 'p'
        ])
        total_wrong = pos_dict[k]['x'] + pos_dict[k]['p']

        pct_x = 100 * safe_div(pos_dict[k]['p'], total_pos_ph_x)
        pct_p = 100 * safe_div(pos_dict[k]['x'], total_pos_ph_p)
        pct_tot = 100 * \
            safe_div(total_wrong, total_pos)

        eval_by_pos[k] = {
            "Total in Test Set": total_pos,
            "Total Mistakes": total_wrong,
            "Mistakes Percentage": pct_tot,
            "Total 'x' in Test Set": total_pos_ph_x,
            "Mistaken for '" + 'p' + "'": pos_dict[k]['p'],
            "Percentage 'x'": pct_x,
            "Total '" + 'p' + "' in Test Set": total_pos_ph_p,
            "Mistaken for 'x'": pos_dict[k]['x'],
            "Percentage '" + 'p' + "'": pct_p
        }

    eval_by_pos = {
        item[0]: item[1]
        for item in sorted(eval_by_pos.items(),
                           key=lambda x: (x[1]["Total Mistakes"]),
                           reverse=True)
    }

    df_eval_by_pos = pd.DataFrame.from_dict(eval_by_pos).T
    int_cols = [
        "Total in Test Set", "Total Mistakes", "Total 'x' in Test Set", "Mistaken for 'x'",
        "Total '" + 'p' + "' in Test Set", "Mistaken for '" + 'p' + "'"
    ]
    float_cols = [
        "Mistakes Percentage", "Percentage 'x'", "Percentage '" + 'p' + "'"
    ]
    
    # creates a data frame containing the evaluation per the part of speech 
    df_eval_by_pos[int_cols] = df_eval_by_pos[int_cols].applymap(np.int64)
    df_eval_by_pos[float_cols] = df_eval_by_pos[float_cols].round(2)

    # creates a cross evaluation
    cross_eval = [[
        cross_dict[key][key2] if key2 in cross_dict[key] else 0
        for key2 in list(cross_dict.keys())
    ] for key in list(cross_dict.keys())]
    df_cross_eval = pd.DataFrame(
        cross_eval,
        columns=["End of Phrase Atom", "Not " + "End of Phrase Atom"],
        index=["Predicted as End", "Predicted as Not End"])

    eval_summary = {
        "Correct Classifications":
        correct_test,
        "Misclassifications":
        wrong_test,
        "Accuracy":
        round(100 * safe_div(correct_test, (correct_test + wrong_test)), 2)
    }
    print("Accuracy:",
          round(100 * safe_div(correct_test, (correct_test + wrong_test)), 2))
    
    # creates a dataframe of the cross evaluation
    df_eval_summary = pd.DataFrame(eval_summary, index=["Value"])

    return df_eval_by_pos, df_cross_eval, df_eval_summary, bible_section

The following script runs the previous functions to predict the outcomes for the test set, does some evaluations, and displays the results in tables.

In [22]:
# creates the encoder and decoder inference model
encoder_model_inf, decoder_model_inf = encoder_decoder_model(
    encoder_input, encoder_states, decoder_LSTM, decoder_dense)

# creates the decision dictionary containing up to predicted outcomes for each word
decision_dict = prediction_dict(test_blocks, one_hot_test_data, op_ph_test)

# evaluates the results and publishes the results in tables
df_eval_by_pos, df_cross_eval, df_eval_summary, bible_section = test_evaluation(
    test_blocks, decision_dict)
Accuracy: 96.46
In [23]:
df_eval_summary
Out[23]:
Correct Classifications Misclassifications Accuracy
Value 44139 1620 96.46
In [24]:
df_cross_eval
Out[24]:
End of Phrase Atom Not End of Phrase Atom
Predicted as End 26725 499
Predicted as Not End 1121 17414

The model was able to predict the phrase atom boundaries for the test set correctly for 96.46% of the words. It is important to analyse the model's performance further. Therefore, the results are evaluated more specifically. The following table shows the errors per part of speech:

In [25]:
df_eval_by_pos
Out[25]:
Total in Test Set Total Mistakes Mistakes Percentage Total 'x' in Test Set Mistaken for 'p' Percentage 'x' Total 'p' in Test Set Mistaken for 'x' Percentage 'p'
subs_a 6083 493 8.10 1251 349 27.90 4832 144 2.98
conj 6051 416 6.87 1074 293 27.28 4977 123 2.47
nmpr_a 2803 146 5.21 367 102 27.79 2436 44 1.81
verb_c 535 132 24.67 211 94 44.55 324 38 11.73
prps 5097 110 2.16 200 96 48.00 4897 14 0.29
subs_c 6084 98 1.61 5897 19 0.32 187 79 42.25
advb 451 71 15.74 97 60 61.86 354 11 3.11
art 2460 52 2.11 2314 24 1.04 146 28 19.18
adjv_a 965 52 5.39 103 48 46.60 862 4 0.46
verb_a 1149 23 2.00 25 23 92.00 1124 0 0.00
prep 6945 11 0.16 6914 3 0.04 31 8 25.81
nega 664 5 0.75 3 2 66.67 661 3 0.45
prde 231 5 2.16 8 4 50.00 223 1 0.45
inrg 122 3 2.46 5 2 40.00 117 1 0.85
intj 201 2 1.00 2 2 100.00 199 0 0.00
adjv_c 62 1 1.61 60 0 0.00 2 1 50.00

Most of the mistakes occurred in predicting the phrase atom position for words that were conjunctions or substantives with an absolute state (416 and 493 errors). Relatively, most errors occurred for verbs in the construct state and adverbs (24.67 and 15.74%).

For a complete list of incorrect predictions, see the end of this notebook.

The final goal of this notebook was to predict phrase atom boundaries for the DSS package. For that reason, the model is tested on one scroll, namely, the Community Scroll (1QS). First, the extra-biblical package that contains this scroll is imported:

In [27]:
from tf.fabric import Fabric

TF = Fabric(locations='C:/Users/Mark/text-fabric-data/etcbc/extrabiblical/tf/0.2')

api = TF.load('''
    otype mother lex st typ code function rela det txt prs kind vs vt sp book chapter verse label language
''')

api.makeAvailableIn(globals())
This is Text-Fabric 8.3.0
Api reference : https://annotation.github.io/text-fabric/cheatsheet.html

72 features found and 0 ignored
  0.00s loading features ...
   |     0.00s Dataset without structure sections in otext:no structure functions in the T-API
  0.35s All features loaded/computed - for details use loadLog()
Out[27]:
[('Computed',
  'computed-data',
  ('C Computed', 'Call AllComputeds', 'Cs ComputedString')),
 ('Features', 'edge-features', ('E Edge', 'Eall AllEdges', 'Es EdgeString')),
 ('Fabric', 'loading', ('TF',)),
 ('Locality', 'locality', ('L Locality',)),
 ('Nodes', 'navigating-nodes', ('N Nodes',)),
 ('Features',
  'node-features',
  ('F Feature', 'Fall AllFeatures', 'Fs FeatureString')),
 ('Search', 'search', ('S Search',)),
 ('Text', 'text', ('T Text',))]

The following steps of collecting and pre-processing the data are similar to the steps taken earlier when the model was trained on the BHSA. The main difference is that - this time - only one data set is created, which is the test set. As the model has already been trained, a training set is no longer needed.

Moreover, there are some important differences between the structure of the data of the BHSA and the extra-biblical package:

  1. Most scrolls of the extra-biblical package are fragmentary, which means that some words are unreadable or missing from the scroll. Therefore, the data set does not always contain consecutive continuous words. To deal with this problem, the chapters are split into smaller blocks when and where ommissions occur (this process is similar to the splitting of the chapters of the BHSA when non-Hebrew words occurred).
  2. Contrary to the BHSA, in the extra-biblical package, the pronominal suffix is considered as an individual word. This is no longer a problem, as the data of the BHSA has been pre-processed earlier in such a manner that it is similar to the extra-biblical package in this respect.

Most functions that were used before on the BHSA can be used again without alterations. Because of the differences mentioned above, only the bundling of usable segments of consecutive words, the collection of input and output data, and the preparation of the test set need to be programmed differently.

In [28]:
def create_dss_blocks(test_book=['B_1QS']):
    
    dss_blocks = collections.defaultdict(list)
    chapters = [
        chap for chap in F.otype.s("chapter") if F.book.v(chap) in test_book
    ]
    
    block_index = 0
    # iterates over all chapters and collects all words except the elided-he
    for chap in chapters:
        chap_words = [w for w in L.d(chap, "word") if F.g_cons.v(w) != '']
        block = []
        
        # detects and removes omissions and splits blocks when they occur
        for word in range(len(chap_words)):
            if F.lex.v(chap_words[word]) == '=':
                if block != []:
                    dss_blocks[block_index] = block
            elif F.lex.v(chap_words[word]) != '=':
                block.append(chap_words[word])
                block_index += 1
        if block != []:
            dss_blocks[block_index] = block
            block_index += 1
    
    # filters out blocks that are shorter than the sequence length (9)
    dss_blocks = {block: words for block, words in dss_blocks.items() if len(words) >= 9}
    
    # shuffles the blocks randomly
    indexes = shuffle(list(dss_blocks.keys()))
    dss_blocks = {k: dss_blocks[k] for k in indexes}
    
    return dss_blocks
    
In [29]:
def collect_dss_data(dss_blocks, ratio=0.9):

    dss_data = {}

    # iterates through all blocks
    for block_idx, block_words in dss_blocks.items():
        block_data = []

        # iterates through all words
        for w in block_words:
            block_data.append([position_in_phrase_atom(w), get_pos(w), w])
        dss_data[block_idx] = block_data

    return dss_data
In [30]:
def prep_test_data(dss_data):

    ip_pos_dss = {}
    op_ph_dss = {}
    
    # iterates through dss blocks
    for block in dss_data:
        ip_pos_dss_block = []
        op_ph_dss_block = []
        dss_words = dss_data[block]

        for w in range(len(dss_words[:-8])):
            
            # collects dss data
            pos = [dss_words[w][1] for w in range(w, w + 9)]
            ph_atom = [dss_words[w][0] for w in range(w, w + 9)]
            
            ip_pos_dss_block.append(pos)
            op_ph_dss_block.append(ph_atom)

        ip_pos_dss[block] = ip_pos_dss_block
        op_ph_dss[block] = op_ph_dss_block

    return ip_pos_dss, op_ph_dss

The following script runs all necessary functions to create the input data the DSS and to run it through the model. The resulting outcomes are shown in tables similar to those of the test set of the BHSA.

In [31]:
test_book = ['B_1QS']

# creates test data
dss_blocks = create_dss_blocks(test_book)
dss_data = collect_dss_data(dss_blocks)

# prepares test data
ip_pos_dss, op_ph_dss = prep_test_data(dss_data)

# one-hot encodes test data
one_hot_dss_data = {
    block: one_hot_encode(max_len_ip, max_len_op, ip_pos_voc, op_ph_voc, ip_pos2idx,
                   op_ph2idx, ip_pos_dss[block], op_ph_seq)[0]
    for block in dss_data
}

# creates prediction dictionary
decision_dict_dss = prediction_dict(dss_data, one_hot_dss_data, op_ph_dss)

df_eval_by_pos_dss, df_cross_eval_dss, df_eval_summary_dss, bible_section_dss = test_evaluation(
    dss_data, decision_dict_dss)
Accuracy: 94.47
In [32]:
df_eval_summary_dss
Out[32]:
Correct Classifications Misclassifications Accuracy
Value 9731 570 94.47
In [33]:
df_cross_eval_dss
Out[33]:
End of Phrase Atom Not End of Phrase Atom
Predicted as End 5052 162
Predicted as Not End 408 4679

In the end, the model trained on the BHSA is able to predict the phrase atom boundaries for the Qumran Community Scroll with a 94.47% accuracy.

In [34]:
df_eval_by_pos_dss
Out[34]:
Total in Test Set Total Mistakes Mistakes Percentage Total 'x' in Test Set Mistaken for 'p' Percentage 'x' Total 'p' in Test Set Mistaken for 'x' Percentage 'p'
subs_a 1606 224 13.95 339 193 56.93 1267 31 2.45
conj 1252 144 11.50 238 117 49.16 1014 27 2.66
prps 966 49 5.07 66 41 62.12 900 8 0.89
subs_c 1979 47 2.37 1886 8 0.42 93 39 41.94
verb_c 104 47 45.19 19 12 63.16 85 35 41.18
art 630 16 2.54 546 8 1.47 84 8 9.52
adjv_a 185 12 6.49 13 10 76.92 172 2 1.16
advb 47 12 25.53 6 6 100.00 41 6 14.63
verb_a 551 6 1.09 7 6 85.71 544 0 0.00
prep 1940 5 0.26 1933 0 0.00 7 5 71.43
prde 58 4 6.90 4 4 100.00 54 0 0.00
intj 6 3 50.00 3 3 100.00 3 0 0.00
nmpr_a 55 1 1.82 3 0 0.00 52 1 1.92

Most of the mistakes occurred in predicting the phrase atom position for words that were conjunctions or substantives with an absolute state (144 and 224 errors). Relatively, the most errors occurred for verbs in the construct state and adverbs (45.19 and 25.53%). The high error rate of interjections is not meaningful as interjections only occur 6 times in 1QS of which 3 are wrongly predicted. The results are strikingly similar to the evaluation of the test set of the BHSA. This could mean that the Hebrew of 1QS is not that different from the Hebrew of the BHSA.

In conclusion, a sequence to sequence Neural Network with a LSTM encoder-decoder is quite capable of finding relations between parts of speech and phrase atom end. For further research, one could build upon this model to predict phrase functions, for instance. In fact, these kind of models could be used in the field of ancient languages for many more applications, such as manuscript clustering, feature parsing, or to address questions of authorship, dating, and much more.

For the sake of completeness, here follows the complete list of wrong predictions both on the test set of the BHSA and on 1QS. Each line shows the node, verse, part of speech, correct and predicted position in the phrase atom:

In [35]:
for error in bible_section:
    print(error)
223011 Isaiah 33:6 conj x p
223074 Isaiah 33:12 subs_a x p
223093 Isaiah 33:14 subs_a p x
223164 Isaiah 33:19 subs_a x p
223173 Isaiah 33:19 verb_c x p
223175 Isaiah 33:19 subs_c p x
223199 Isaiah 33:21 conj x p
223207 Isaiah 33:21 subs_a x p
223242 Isaiah 33:23 subs_a p x
223256 Isaiah 33:24 verb_c x p
158210 1 Samuel 27:1 subs_a x p
158244 1 Samuel 27:2 prps x p
158245 1 Samuel 27:2 conj x p
158267 1 Samuel 27:3 subs_a x p
158268 1 Samuel 27:3 conj x p
158270 1 Samuel 27:3 nmpr_a x p
158271 1 Samuel 27:3 conj x p
97458 Deuteronomy 7:1 subs_a p x
97514 Deuteronomy 7:5 conj x p
97618 Deuteronomy 7:9 subs_a p x
97620 Deuteronomy 7:9 subs_a x p
97621 Deuteronomy 7:9 art x p
97625 Deuteronomy 7:9 subs_a x p
97626 Deuteronomy 7:9 conj x p
97630 Deuteronomy 7:9 verb_c x p
97630 Deuteronomy 7:9 prps x p
97631 Deuteronomy 7:9 conj x p
97633 Deuteronomy 7:9 verb_c x p
97641 Deuteronomy 7:10 verb_c x p
97649 Deuteronomy 7:10 verb_c x p
97761 Deuteronomy 7:15 nmpr_a x p
97823 Deuteronomy 7:18 subs_a x p
97824 Deuteronomy 7:18 conj x p
97880 Deuteronomy 7:20 verb_a x p
97881 Deuteronomy 7:20 conj x p
97882 Deuteronomy 7:20 art x p
97910 Deuteronomy 7:22 subs_a x p
97963 Deuteronomy 7:25 subs_a x p
97964 Deuteronomy 7:25 conj x p
282432 Ezekiel 36:2 art x p
282453 Ezekiel 36:3 subs_c p x
282471 Ezekiel 36:3 subs_a x p
282472 Ezekiel 36:3 conj x p
282480 Ezekiel 36:4 nmpr_a x p
282492 Ezekiel 36:4 subs_a x p
282504 Ezekiel 36:4 art p x
282540 Ezekiel 36:5 subs_a x p
282541 Ezekiel 36:5 conj x p
282555 Ezekiel 36:5 subs_a x p
282559 Ezekiel 36:5 prep p x
282576 Ezekiel 36:6 subs_a x p
282590 Ezekiel 36:6 prps x p
282591 Ezekiel 36:6 conj x p
282595 Ezekiel 36:6 subs_c p x
282730 Ezekiel 36:14 nmpr_a x p
282752 Ezekiel 36:15 nmpr_a x p
282812 Ezekiel 36:19 prps x p
282813 Ezekiel 36:19 conj x p
282870 Ezekiel 36:22 conj x p
282906 Ezekiel 36:23 nmpr_a x p
283033 Ezekiel 36:30 subs_a x p
283034 Ezekiel 36:30 conj x p
283064 Ezekiel 36:31 prps x p
283065 Ezekiel 36:31 conj x p
283073 Ezekiel 36:32 nmpr_a x p
283103 Ezekiel 36:33 subs_a p x
283104 Ezekiel 36:34 conj p x
283106 Ezekiel 36:34 subs_a x p
283107 Ezekiel 36:34 art x p
283110 Ezekiel 36:34 subs_c x p
283137 Ezekiel 36:35 verb_a x p
283138 Ezekiel 36:35 conj x p
283139 Ezekiel 36:35 art x p
283154 Ezekiel 36:36 art p x
283157 Ezekiel 36:36 art p x
312029 Psalms 11:5 adjv_a x p
312030 Psalms 11:5 conj x p
312038 Psalms 11:6 subs_a x p
363235 Ecclesiastes 12:1 verb_c x p
363298 Ecclesiastes 12:3 art p x
363326 Ecclesiastes 12:5 advb x p
363359 Ecclesiastes 12:5 art x p
363412 Ecclesiastes 12:8 subs_a p x
363413 Ecclesiastes 12:9 conj p x
363414 Ecclesiastes 12:9 subs_a x p
363417 Ecclesiastes 12:9 subs_a p x
363450 Ecclesiastes 12:11 subs_a x p
363456 Ecclesiastes 12:11 verb_a x p
363464 Ecclesiastes 12:12 verb_c p x
363467 Ecclesiastes 12:12 subs_c p x
198188 2 Kings 6:2 subs_a p x
198502 2 Kings 6:17 subs_a x p
198503 2 Kings 6:17 conj x p
198690 2 Kings 6:25 subs_a x p
198695 2 Kings 6:25 subs_a x p
198698 2 Kings 6:25 subs_a x p
198895 2 Kings 6:33 subs_c p x
317549 Psalms 43:1 subs_a x p
317550 Psalms 43:1 nega x p
317554 Psalms 43:1 subs_a x p
317555 Psalms 43:1 conj x p
317568 Psalms 43:2 subs_a x p
317571 Psalms 43:3 prps x p
317572 Psalms 43:3 conj x p
317612 Psalms 43:5 prps x p
317613 Psalms 43:5 conj x p
317614 Psalms 43:5 subs_c p x
408774 2 Chronicles 5:8 subs_a x p
408814 2 Chronicles 5:10 advb x p
408862 2 Chronicles 5:12 nmpr_a x p
408864 2 Chronicles 5:12 nmpr_a x p
408869 2 Chronicles 5:12 prps x p
408870 2 Chronicles 5:12 conj x p
408879 2 Chronicles 5:12 subs_a x p
408880 2 Chronicles 5:12 conj x p
408891 2 Chronicles 5:12 subs_a x p
408892 2 Chronicles 5:12 conj x p
408903 2 Chronicles 5:13 verb_a x p
408904 2 Chronicles 5:13 conj x p
408910 2 Chronicles 5:13 subs_a x p
361488 Ecclesiastes 7:1 subs_c p x
361534 Ecclesiastes 7:4 subs_a p x
361549 Ecclesiastes 7:6 subs_a x p
361570 Ecclesiastes 7:7 subs_a p x
361621 Ecclesiastes 7:11 verb_c x p
361664 Ecclesiastes 7:14 advb x p
361689 Ecclesiastes 7:15 subs_a p x
361695 Ecclesiastes 7:15 subs_a p x
361719 Ecclesiastes 7:17 prep x p
361720 Ecclesiastes 7:17 nega x p
361757 Ecclesiastes 7:20 subs_c p x
361768 Ecclesiastes 7:21 advb x p
361783 Ecclesiastes 7:21 verb_c p x
361785 Ecclesiastes 7:22 advb x p
361812 Ecclesiastes 7:24 adjv_a x p
361817 Ecclesiastes 7:25 prps x p
361818 Ecclesiastes 7:25 conj x p
361885 Ecclesiastes 7:28 subs_a x p
361913 Ecclesiastes 7:29 subs_a x p
106824 Deuteronomy 25:2 subs_c x p
106883 Deuteronomy 25:5 subs_a x p
106904 Deuteronomy 25:6 prps x p
106905 Deuteronomy 25:6 art x p
107000 Deuteronomy 25:10 verb_c x p
107007 Deuteronomy 25:11 subs_a x p
107008 Deuteronomy 25:11 conj x p
107043 Deuteronomy 25:13 subs_a p x
107044 Deuteronomy 25:13 adjv_a x p
107045 Deuteronomy 25:13 conj x p
107054 Deuteronomy 25:14 subs_a p x
107055 Deuteronomy 25:14 adjv_a x p
107056 Deuteronomy 25:14 conj x p
107059 Deuteronomy 25:15 adjv_a x p
107060 Deuteronomy 25:15 conj x p
107065 Deuteronomy 25:15 adjv_a x p
107066 Deuteronomy 25:15 conj x p
107086 Deuteronomy 25:16 verb_c x p
107133 Deuteronomy 25:19 subs_c x p
107134 Deuteronomy 25:19 verb_c x p
1697 Genesis 4:2 verb_c x p
1864 Genesis 4:12 verb_a x p
1865 Genesis 4:12 conj x p
1896 Genesis 4:14 verb_a x p
1897 Genesis 4:14 conj x p
1904 Genesis 4:14 subs_c p x
1905 Genesis 4:14 verb_c p x
2034 Genesis 4:22 verb_c x p
2049 Genesis 4:23 nmpr_a x p
2050 Genesis 4:23 conj x p
2070 Genesis 4:24 nmpr_a p x
2071 Genesis 4:24 conj p x
340094 Job 16:2 verb_c x p
340142 Job 16:7 advb x p
340247 Job 16:17 prep p x
340248 Job 16:17 nega p x
340265 Job 16:19 advb x p
340277 Job 16:20 verb_c x p
77885 Numbers 13:2 subs_a p x
78079 Numbers 13:19 subs_a p x
78080 Numbers 13:19 conj p x
78095 Numbers 13:20 subs_a p x
78096 Numbers 13:20 conj p x
78137 Numbers 13:22 advb p x
78138 Numbers 13:22 nmpr_a x p
78152 Numbers 13:22 nmpr_a x p
78280 Numbers 13:28 adjv_a x p
78294 Numbers 13:29 subs_a p x
78295 Numbers 13:29 conj p x
78314 Numbers 13:29 subs_a x p
78315 Numbers 13:29 conj x p
78380 Numbers 13:32 verb_c x p
78382 Numbers 13:32 conj p x
215185 Isaiah 9:2 subs_c x p
215244 Isaiah 9:5 subs_c x p
215246 Isaiah 9:5 subs_a x p
215255 Isaiah 9:6 subs_a x p
215256 Isaiah 9:6 conj x p
215259 Isaiah 9:6 subs_c p x
215279 Isaiah 9:6 advb x p
215280 Isaiah 9:6 conj x p
215284 Isaiah 9:6 nmpr_a x p
215302 Isaiah 9:8 nmpr_a x p
215303 Isaiah 9:8 conj x p
215307 Isaiah 9:8 subs_a x p
215308 Isaiah 9:8 conj x p
215333 Isaiah 9:10 verb_c x p
215365 Isaiah 9:12 art p x
215366 Isaiah 9:12 verb_c p x
215369 Isaiah 9:12 nmpr_a x p
215380 Isaiah 9:13 subs_a p x
215383 Isaiah 9:13 subs_a p x
215385 Isaiah 9:13 subs_a p x
215386 Isaiah 9:14 adjv_a x p
215387 Isaiah 9:14 conj x p
215409 Isaiah 9:15 verb_c x p
215420 Isaiah 9:16 prps x p
215421 Isaiah 9:16 conj x p
215428 Isaiah 9:16 adjv_a x p
215429 Isaiah 9:16 conj x p
215452 Isaiah 9:17 subs_a x p
215453 Isaiah 9:17 conj x p
215468 Isaiah 9:18 nmpr_a x p
215503 Isaiah 9:20 nmpr_a p x
215504 Isaiah 9:20 conj p x
229635 Isaiah 50:1 verb_c x p
229652 Isaiah 50:2 subs_c p x
229696 Isaiah 50:4 nmpr_a x p
229712 Isaiah 50:4 subs_a x p
229724 Isaiah 50:5 nmpr_a x p
229748 Isaiah 50:6 subs_a x p
229749 Isaiah 50:6 conj x p
229812 Isaiah 50:10 subs_c p x
229827 Isaiah 50:11 verb_c p x
342881 Job 29:2 subs_c p x
342899 Job 29:4 prep p x
342905 Job 29:5 subs_c p x
342976 Job 29:13 subs_c x p
342989 Job 29:14 subs_a x p
342990 Job 29:14 conj x p
260262 Jeremiah 47:2 subs_a x p
260266 Jeremiah 47:2 subs_a x p
260267 Jeremiah 47:2 conj x p
260268 Jeremiah 47:2 prps x p
260269 Jeremiah 47:2 subs_a x p
260270 Jeremiah 47:2 conj x p
260271 Jeremiah 47:2 verb_c x p
260320 Jeremiah 47:4 subs_a x p
260362 Jeremiah 47:7 nmpr_a x p
260363 Jeremiah 47:7 conj x p
303116 Zephaniah 1:3 subs_a x p
303117 Zephaniah 1:3 conj x p
303169 Zephaniah 1:5 art p x
303180 Zephaniah 1:5 art p x
303193 Zephaniah 1:6 art p x
303210 Zephaniah 1:7 nmpr_a x p
303237 Zephaniah 1:8 subs_a x p
303238 Zephaniah 1:8 conj x p
303240 Zephaniah 1:8 subs_c p x
303241 Zephaniah 1:8 art p x
303248 Zephaniah 1:9 subs_c p x
303249 Zephaniah 1:9 art p x
303362 Zephaniah 1:14 nmpr_a x p
303397 Zephaniah 1:15 subs_a p x
303406 Zephaniah 1:16 adjv_a x p
303407 Zephaniah 1:16 conj x p
303438 Zephaniah 1:18 advb x p
303439 Zephaniah 1:18 prps x p
303440 Zephaniah 1:18 advb x p
303459 Zephaniah 1:18 subs_a x p
303460 Zephaniah 1:18 advb x p
313947 Psalms 23:6 advb x p
313948 Psalms 23:6 adjv_a x p
313949 Psalms 23:6 conj x p
293061 Hosea 10:1 subs_a x p
293093 Hosea 10:3 subs_c p x
293131 Hosea 10:5 prps x p
293132 Hosea 10:5 conj x p
293141 Hosea 10:6 advb x p
293222 Hosea 10:11 subs_a x p
293250 Hosea 10:12 subs_a p x
293251 Hosea 10:12 conj p x
312693 Psalms 18:3 prps x p
312700 Psalms 18:4 verb_c x p
312789 Psalms 18:12 subs_a x p
312797 Psalms 18:13 subs_a x p
312798 Psalms 18:13 conj x p
312811 Psalms 18:14 subs_a x p
312812 Psalms 18:14 conj x p
312821 Psalms 18:15 subs_a p x
312850 Psalms 18:18 verb_c x p
312850 Psalms 18:18 prps x p
312851 Psalms 18:18 adjv_a x p
312852 Psalms 18:18 conj x p
312854 Psalms 18:18 verb_c x p
312929 Psalms 18:26 subs_a x p
312992 Psalms 18:33 art p x
313139 Psalms 18:49 verb_c x p
313140 Psalms 18:49 advb x p
313142 Psalms 18:49 verb_c x p
291182 Hosea 2:5 subs_c p x
291183 Hosea 2:5 verb_c p x
291218 Hosea 2:7 verb_c x p
291221 Hosea 2:7 prps x p
291224 Hosea 2:7 prps x p
291247 Hosea 2:9 verb_c x p
291335 Hosea 2:13 prps x p
291336 Hosea 2:13 prps x p
291408 Hosea 2:17 advb p x
291409 Hosea 2:17 conj p x
291421 Hosea 2:17 prps x p
291422 Hosea 2:17 conj x p
291424 Hosea 2:17 subs_c p x
291477 Hosea 2:20 subs_a x p
291478 Hosea 2:20 conj x p
412657 2 Chronicles 12:3 subs_a x p
412658 2 Chronicles 12:3 conj x p
412660 2 Chronicles 12:3 subs_a x p
412664 2 Chronicles 12:3 subs_c p x
412697 2 Chronicles 12:5 nmpr_a x p
412698 2 Chronicles 12:5 conj x p
412728 2 Chronicles 12:6 nmpr_a x p
412775 2 Chronicles 12:8 prps x p
281533 Ezekiel 34:2 verb_c x p
281558 Ezekiel 34:2 art x p
281668 Ezekiel 34:8 verb_c p x
281693 Ezekiel 34:8 art x p
281730 Ezekiel 34:10 art x p
281758 Ezekiel 34:12 subs_c p x
281808 Ezekiel 34:13 subs_a x p
281809 Ezekiel 34:13 conj x p
281846 Ezekiel 34:15 nmpr_a x p
281919 Ezekiel 34:18 art x p
281945 Ezekiel 34:20 adjv_a x p
281946 Ezekiel 34:20 conj x p
281952 Ezekiel 34:21 subs_a x p
281953 Ezekiel 34:21 conj x p
281961 Ezekiel 34:21 subs_c x p
281962 Ezekiel 34:21 art x p
281990 Ezekiel 34:23 verb_a x p
282049 Ezekiel 34:26 prps x p
282050 Ezekiel 34:26 conj x p
282129 Ezekiel 34:29 verb_c x p
282154 Ezekiel 34:30 nmpr_a x p
282166 Ezekiel 34:31 nmpr_a x p
319818 Psalms 57:4 prps x p
319819 Psalms 57:4 conj x p
319873 Psalms 57:9 subs_a x p
319874 Psalms 57:9 conj x p
58907 Leviticus 13:2 subs_c x p
58958 Leviticus 13:4 subs_c p x
59005 Leviticus 13:5 subs_a p x
59107 Leviticus 13:10 subs_a p x
59116 Leviticus 13:11 subs_a x p
59308 Leviticus 13:21 adjv_a p x
59309 Leviticus 13:21 conj p x
59311 Leviticus 13:21 subs_c p x
59380 Leviticus 13:25 subs_a p x
59420 Leviticus 13:26 subs_c p x
59524 Leviticus 13:30 subs_a x p
59525 Leviticus 13:30 conj x p
59540 Leviticus 13:31 subs_c p x
59589 Leviticus 13:32 subs_c p x
59610 Leviticus 13:33 subs_a p x
59635 Leviticus 13:34 subs_c p x
59727 Leviticus 13:39 adjv_a x p
59768 Leviticus 13:42 adjv_a x p
59770 Leviticus 13:42 subs_a x p
59800 Leviticus 13:44 subs_a x p
59831 Leviticus 13:45 adjv_a x p
59835 Leviticus 13:46 subs_c p x
59861 Leviticus 13:47 subs_a x p
59865 Leviticus 13:47 subs_a p x
59866 Leviticus 13:48 conj p x
59878 Leviticus 13:48 subs_a p x
59879 Leviticus 13:48 conj p x
59973 Leviticus 13:51 subs_a x p
59998 Leviticus 13:52 subs_a p x
59999 Leviticus 13:52 conj p x
60011 Leviticus 13:52 subs_a x p
60059 Leviticus 13:54 subs_a p x
60065 Leviticus 13:55 subs_c x p
60106 Leviticus 13:56 subs_c x p
60157 Leviticus 13:57 subs_a p x
60158 Leviticus 13:58 conj p x
233979 Isaiah 65:2 subs_a x p
234016 Isaiah 65:4 art p x
234049 Isaiah 65:6 conj x p
234075 Isaiah 65:7 prps x p
234114 Isaiah 65:9 verb_c x p
234244 Isaiah 65:15 nmpr_a x p
234287 Isaiah 65:17 adjv_a x p
234288 Isaiah 65:17 conj x p
234301 Isaiah 65:18 conj x p
234334 Isaiah 65:19 subs_a x p
234335 Isaiah 65:19 conj x p
234344 Isaiah 65:20 subs_a x p
234356 Isaiah 65:20 subs_a x p
234360 Isaiah 65:20 art x p
234363 Isaiah 65:20 subs_a x p
234414 Isaiah 65:23 prps p x
234415 Isaiah 65:23 conj p x
234431 Isaiah 65:25 subs_a x p
234432 Isaiah 65:25 conj x p
240106 Jeremiah 10:13 subs_c p x
240107 Jeremiah 10:13 verb_c p x
240169 Jeremiah 10:16 nmpr_a x p
240187 Jeremiah 10:18 verb_c x p
240209 Jeremiah 10:19 advb p x
240223 Jeremiah 10:20 subs_c p x
240284 Jeremiah 10:24 advb x p
88943 Numbers 31:5 subs_a x p
88945 Numbers 31:5 subs_a x p
88946 Numbers 31:5 verb_c x p
88959 Numbers 31:6 prps x p
88960 Numbers 31:6 conj x p
88973 Numbers 31:6 subs_a x p
88974 Numbers 31:6 conj x p
89036 Numbers 31:9 prps p x
89037 Numbers 31:9 conj p x
89044 Numbers 31:9 prps x p
89045 Numbers 31:9 conj x p
89115 Numbers 31:12 nmpr_a x p
89141 Numbers 31:14 verb_c x p
89146 Numbers 31:14 subs_a x p
89244 Numbers 31:19 adjv_a x p
89245 Numbers 31:19 conj x p
89253 Numbers 31:19 prps p x
89254 Numbers 31:20 conj p x
89264 Numbers 31:20 subs_a x p
89265 Numbers 31:20 conj x p
89300 Numbers 31:22 subs_a x p
89303 Numbers 31:22 subs_a x p
89306 Numbers 31:22 subs_a x p
89327 Numbers 31:23 advb x p
89375 Numbers 31:26 subs_a x p
89376 Numbers 31:26 conj x p
89380 Numbers 31:26 prps x p
89381 Numbers 31:26 conj x p
89462 Numbers 31:30 subs_a x p
89469 Numbers 31:30 subs_a x p
89472 Numbers 31:30 subs_a x p
89479 Numbers 31:30 subs_a x p
89490 Numbers 31:30 verb_c x p
89519 Numbers 31:32 subs_a x p
89528 Numbers 31:32 subs_a p x
89529 Numbers 31:33 conj p x
89534 Numbers 31:33 subs_a p x
89535 Numbers 31:34 conj p x
89570 Numbers 31:36 subs_a x p
89572 Numbers 31:36 subs_a x p
89610 Numbers 31:38 subs_a p x
89611 Numbers 31:39 conj p x
89612 Numbers 31:39 subs_a p x
89625 Numbers 31:40 conj p x
89655 Numbers 31:41 nmpr_a p x
89656 Numbers 31:42 conj p x
89682 Numbers 31:43 subs_a x p
89687 Numbers 31:43 subs_a p x
89688 Numbers 31:44 conj p x
89689 Numbers 31:44 subs_a p x
89693 Numbers 31:44 subs_a p x
89694 Numbers 31:45 conj p x
89695 Numbers 31:45 subs_a p x
89697 Numbers 31:45 subs_a x p
89700 Numbers 31:45 subs_a p x
89701 Numbers 31:46 conj p x
89716 Numbers 31:47 verb_a x p
89734 Numbers 31:47 verb_c x p
89790 Numbers 31:50 subs_a x p
89795 Numbers 31:50 subs_a x p
89796 Numbers 31:50 conj x p
89832 Numbers 31:52 subs_a x p
89842 Numbers 31:52 subs_a x p
89843 Numbers 31:52 conj x p
89869 Numbers 31:54 subs_a x p
218594 Isaiah 20:1 subs_c p x
218672 Isaiah 20:4 nmpr_a x p
218673 Isaiah 20:4 conj x p
218679 Isaiah 20:4 adjv_a p x
218701 Isaiah 20:6 verb_a x p
1180 Genesis 3:1 nmpr_a x p
1292 Genesis 3:6 advb x p
1319 Genesis 3:8 nmpr_a x p
1332 Genesis 3:8 subs_a x p
1333 Genesis 3:8 conj x p
1337 Genesis 3:8 nmpr_a x p
1346 Genesis 3:9 nmpr_a x p
1408 Genesis 3:13 nmpr_a x p
1427 Genesis 3:14 nmpr_a x p
1440 Genesis 3:14 subs_a x p
1441 Genesis 3:14 conj x p
1459 Genesis 3:15 prps x p
1460 Genesis 3:15 conj x p
1463 Genesis 3:15 subs_a x p
1483 Genesis 3:16 prps x p
1484 Genesis 3:16 conj x p
1577 Genesis 3:21 nmpr_a x p
1580 Genesis 3:21 subs_a x p
1581 Genesis 3:21 conj x p
1590 Genesis 3:22 nmpr_a x p
1611 Genesis 3:22 advb x p
1624 Genesis 3:23 nmpr_a x p
160566 2 Samuel 1:4 advb x p
160611 2 Samuel 1:6 subs_a x p
160612 2 Samuel 1:6 conj x p
160666 2 Samuel 1:10 verb_c p x
160692 2 Samuel 1:11 advb x p
160742 2 Samuel 1:13 subs_a x p
160877 2 Samuel 1:22 adjv_a x p
160896 2 Samuel 1:23 verb_a x p
160897 2 Samuel 1:23 conj x p
160901 2 Samuel 1:23 prps x p
160902 2 Samuel 1:23 conj x p
160918 2 Samuel 1:24 art p x
332880 Psalms 123:2 prep p x
332886 Psalms 123:2 prep p x
332912 Psalms 123:4 subs_a p x
298706 Jonah 1:7 conj x p
298730 Jonah 1:8 conj x p
298838 Jonah 1:12 conj x p
360622 Ecclesiastes 4:4 subs_a x p
360640 Ecclesiastes 4:4 subs_a p x
360656 Ecclesiastes 4:6 subs_a x p
360657 Ecclesiastes 4:6 subs_a x p
360658 Ecclesiastes 4:6 conj x p
360670 Ecclesiastes 4:8 subs_a p x
360673 Ecclesiastes 4:8 subs_c p x
360675 Ecclesiastes 4:8 advb x p
360676 Ecclesiastes 4:8 subs_a x p
360677 Ecclesiastes 4:8 conj x p
360682 Ecclesiastes 4:8 subs_c p x
360687 Ecclesiastes 4:8 advb x p
360766 Ecclesiastes 4:12 subs_a x p
360767 Ecclesiastes 4:12 art x p
360775 Ecclesiastes 4:13 adjv_a x p
360776 Ecclesiastes 4:13 conj x p
360780 Ecclesiastes 4:13 adjv_a x p
360798 Ecclesiastes 4:14 advb x p
360821 Ecclesiastes 4:16 subs_c p x
360865 Ecclesiastes 4:17 subs_c p x
197466 2 Kings 5:1 verb_c p x
197555 2 Kings 5:5 subs_a x p
197560 2 Kings 5:5 subs_a x p
197563 2 Kings 5:5 subs_a x p
197694 2 Kings 5:10 subs_a x p
197830 2 Kings 5:15 subs_c p x
197836 2 Kings 5:15 conj x p
197875 2 Kings 5:17 subs_a x p
197889 2 Kings 5:17 conj x p
197970 2 Kings 5:20 conj x p
198029 2 Kings 5:22 subs_a x p
198042 2 Kings 5:23 subs_a x p
198100 2 Kings 5:25 inrg x p
198101 2 Kings 5:25 conj x p
70915 Numbers 3:1 nmpr_a x p
70916 Numbers 3:1 conj x p
70934 Numbers 3:2 nmpr_a p x
70935 Numbers 3:2 conj p x
70945 Numbers 3:3 subs_a x p
70946 Numbers 3:3 art x p
71033 Numbers 3:8 subs_a x p
71034 Numbers 3:8 conj x p
71051 Numbers 3:9 nmpr_a x p
71052 Numbers 3:9 conj x p
71062 Numbers 3:9 nmpr_a p x
71063 Numbers 3:10 conj p x
71065 Numbers 3:10 nmpr_a x p
71066 Numbers 3:10 conj x p
71076 Numbers 3:10 adjv_a x p
71116 Numbers 3:13 subs_c p x
71195 Numbers 3:18 nmpr_a p x
71196 Numbers 3:19 conj p x
71227 Numbers 3:21 adjv_a x p
71228 Numbers 3:21 conj x p
71247 Numbers 3:22 verb_c x p
71249 Numbers 3:22 subs_a x p
71250 Numbers 3:22 conj x p
71279 Numbers 3:25 subs_a x p
71280 Numbers 3:25 conj x p
71283 Numbers 3:25 prps x p
71284 Numbers 3:25 conj x p
71292 Numbers 3:26 subs_a x p
71293 Numbers 3:26 conj x p
71299 Numbers 3:26 conj p x
71343 Numbers 3:28 subs_a p x
71344 Numbers 3:28 conj p x
71351 Numbers 3:28 verb_c x p
71397 Numbers 3:31 subs_a x p
71398 Numbers 3:31 conj x p
71420 Numbers 3:33 adjv_a x p
71421 Numbers 3:33 conj x p
71437 Numbers 3:34 subs_a p x
71438 Numbers 3:34 conj p x
71467 Numbers 3:36 subs_a x p
71479 Numbers 3:36 prps p x
71480 Numbers 3:37 conj p x
71506 Numbers 3:38 nmpr_a x p
71507 Numbers 3:38 conj x p
71519 Numbers 3:38 adjv_a x p
71541 Numbers 3:39 subs_a p x
71542 Numbers 3:39 conj p x
71543 Numbers 3:39 subs_a p x
71562 Numbers 3:40 subs_a p x
71563 Numbers 3:40 conj p x
71621 Numbers 3:43 conj p x
71624 Numbers 3:43 verb_c x p
71698 Numbers 3:47 subs_a x p
324867 Psalms 83:4 verb_c x p
324888 Psalms 83:7 nmpr_a x p
324889 Psalms 83:7 conj x p
324890 Psalms 83:7 adjv_a x p
324891 Psalms 83:7 nmpr_a x p
324892 Psalms 83:7 conj x p
324901 Psalms 83:8 verb_c x p
324916 Psalms 83:10 nmpr_a x p
324918 Psalms 83:10 nmpr_a x p
324933 Psalms 83:12 adjv_c p x
324938 Psalms 83:12 nmpr_a p x
324939 Psalms 83:12 conj p x
119448 Joshua 11:1 nmpr_a p x
119449 Joshua 11:2 conj p x
119452 Joshua 11:2 subs_a p x
119453 Joshua 11:2 conj p x
119459 Joshua 11:2 conj p x
119474 Joshua 11:2 subs_a p x
119508 Joshua 11:4 prps x p
119509 Joshua 11:4 conj x p
119510 Joshua 11:4 subs_a x p
119586 Joshua 11:7 nmpr_a x p
119587 Joshua 11:7 conj x p
119612 Joshua 11:8 nmpr_a x p
119613 Joshua 11:8 adjv_a x p
119614 Joshua 11:8 conj x p
119708 Joshua 11:12 prde x p
119709 Joshua 11:12 conj x p
119760 Joshua 11:14 advb x p
119823 Joshua 11:16 nmpr_a x p
119835 Joshua 11:16 nmpr_a x p
119836 Joshua 11:16 conj x p
119944 Joshua 11:21 nmpr_a x p
119946 Joshua 11:21 nmpr_a x p
119949 Joshua 11:21 conj p x
119970 Joshua 11:22 advb x p
119972 Joshua 11:22 nmpr_a x p
119974 Joshua 11:22 nmpr_a x p
119975 Joshua 11:22 conj x p
121035 Joshua 14:2 subs_a x p
121036 Joshua 14:2 conj x p
121046 Joshua 14:3 subs_a x p
121047 Joshua 14:3 conj x p
121084 Joshua 14:4 conj x p
121259 Joshua 14:10 subs_a x p
121260 Joshua 14:10 conj x p
121263 Joshua 14:11 subs_c p x
121283 Joshua 14:11 subs_a p x
121284 Joshua 14:11 conj p x
121320 Joshua 14:12 adjv_a x p
121361 Joshua 14:14 subs_c x p
20926 Genesis 38:6 prps p x
20927 Genesis 38:6 conj p x
20993 Genesis 38:10 advb x p
21040 Genesis 38:12 verb_c x p
21042 Genesis 38:12 prps x p
21043 Genesis 38:12 conj x p
21079 Genesis 38:14 nmpr_a p x
21080 Genesis 38:14 conj p x
21163 Genesis 38:18 conj p x
21197 Genesis 38:20 prps p x
21244 Genesis 38:22 advb x p
21357 Genesis 38:27 verb_c p x
138296 Judges 18:1 subs_c p x
138339 Judges 18:2 subs_a x p
138372 Judges 18:2 advb p x
138383 Judges 18:3 subs_a p x
138475 Judges 18:7 verb_a x p
138476 Judges 18:7 conj x p
138544 Judges 18:10 subs_a x p
138558 Judges 18:10 subs_c p x
138576 Judges 18:11 nmpr_a x p
138577 Judges 18:11 conj x p
138633 Judges 18:14 subs_a x p
138668 Judges 18:15 subs_a p x
138678 Judges 18:16 conj p x
138732 Judges 18:17 subs_a x p
138788 Judges 18:19 verb_c p x
138792 Judges 18:19 subs_a x p
138795 Judges 18:19 verb_c p x
138926 Judges 18:25 prps x p
138968 Judges 18:27 subs_a x p
138969 Judges 18:27 verb_a x p
138970 Judges 18:27 conj x p
139063 Judges 18:30 subs_c p x
139064 Judges 18:30 verb_c p x
139076 Judges 18:31 subs_c p x
50452 Exodus 38:1 subs_a x p
50457 Exodus 38:1 subs_a x p
50490 Exodus 38:3 subs_a x p
50507 Exodus 38:4 subs_a x p
50596 Exodus 38:9 subs_a x p
50602 Exodus 38:10 prps x p
50603 Exodus 38:10 subs_a x p
50604 Exodus 38:10 conj x p
50605 Exodus 38:10 prps x p
50606 Exodus 38:10 subs_a p x
50610 Exodus 38:10 subs_a x p
50611 Exodus 38:10 conj x p
50622 Exodus 38:11 prps x p
50623 Exodus 38:11 subs_a x p
50624 Exodus 38:11 conj x p
50625 Exodus 38:11 prps x p
50626 Exodus 38:11 subs_a p x
50630 Exodus 38:11 subs_a x p
50631 Exodus 38:11 conj x p
50650 Exodus 38:12 subs_a x p
50651 Exodus 38:12 conj x p
50658 Exodus 38:13 subs_a p x
50660 Exodus 38:13 subs_a p x
50663 Exodus 38:14 subs_a x p
50690 Exodus 38:15 subs_a x p
50701 Exodus 38:16 subs_a p x
50702 Exodus 38:16 subs_a x p
50713 Exodus 38:17 subs_a x p
50714 Exodus 38:17 conj x p
50734 Exodus 38:18 subs_c x p
50747 Exodus 38:18 subs_a p x
50761 Exodus 38:19 prps x p
50762 Exodus 38:19 subs_a x p
50763 Exodus 38:19 conj x p
50764 Exodus 38:19 prps x p
50765 Exodus 38:19 subs_a p x
50781 Exodus 38:20 subs_a x p
50786 Exodus 38:20 subs_a p x
50837 Exodus 38:23 verb_a x p
50838 Exodus 38:23 conj x p
50851 Exodus 38:23 subs_a x p
50852 Exodus 38:23 conj x p
50929 Exodus 38:26 subs_a x p
50935 Exodus 38:26 subs_a x p
50936 Exodus 38:26 subs_a x p
50937 Exodus 38:26 conj x p
50956 Exodus 38:27 subs_a x p
50957 Exodus 38:27 conj x p
50975 Exodus 38:28 subs_a x p
50976 Exodus 38:28 conj x p
50979 Exodus 38:28 subs_a x p
50980 Exodus 38:28 conj x p
51014 Exodus 38:30 subs_a x p
51015 Exodus 38:30 conj x p
51044 Exodus 38:31 subs_a x p
51045 Exodus 38:31 conj x p
51050 Exodus 38:31 subs_a x p
51051 Exodus 38:31 conj x p
31972 Exodus 7:11 advb x p
32149 Exodus 7:19 prps x p
32360 Exodus 7:28 prps p x
32361 Exodus 7:28 conj p x
32363 Exodus 7:28 prps p x
32364 Exodus 7:28 conj p x
32378 Exodus 7:29 prps x p
32381 Exodus 7:29 prps x p
32382 Exodus 7:29 conj x p
242638 Jeremiah 16:3 subs_a p x
242639 Jeremiah 16:3 art p x
242645 Jeremiah 16:3 prde p x
242646 Jeremiah 16:3 conj p x
242681 Jeremiah 16:4 subs_a x p
242682 Jeremiah 16:4 conj x p
242809 Jeremiah 16:9 prps p x
242810 Jeremiah 16:9 conj p x
242817 Jeremiah 16:9 subs_a x p
242928 Jeremiah 16:13 prps x p
242929 Jeremiah 16:13 conj x p
242935 Jeremiah 16:13 subs_a x p
242937 Jeremiah 16:13 advb x p
242938 Jeremiah 16:13 conj x p
242954 Jeremiah 16:14 subs_a p x
242965 Jeremiah 16:15 conj x p
243007 Jeremiah 16:16 adjv_a x p
243014 Jeremiah 16:16 subs_a x p
243015 Jeremiah 16:16 conj x p
243019 Jeremiah 16:16 subs_a x p
243020 Jeremiah 16:16 conj x p
243046 Jeremiah 16:18 prps x p
243047 Jeremiah 16:18 conj x p
243055 Jeremiah 16:18 prps x p
243056 Jeremiah 16:18 conj x p
243078 Jeremiah 16:19 advb x p
217754 Isaiah 17:3 nmpr_a x p
217774 Isaiah 17:5 subs_a x p
217795 Isaiah 17:6 subs_a x p
217819 Isaiah 17:7 verb_c x p
217855 Isaiah 17:9 verb_c x p
217857 Isaiah 17:9 subs_a x p
217858 Isaiah 17:9 conj x p
217902 Isaiah 17:11 verb_a x p
217903 Isaiah 17:11 conj x p
217956 Isaiah 17:14 subs_c p x
217958 Isaiah 17:14 subs_c p x
217961 Isaiah 17:14 prps x p
217962 Isaiah 17:14 conj x p
217965 Isaiah 17:14 verb_c x p
268911 Ezekiel 11:3 art p x
268946 Ezekiel 11:5 nmpr_a p x
268947 Ezekiel 11:5 conj p x
269100 Ezekiel 11:15 prps x p
269103 Ezekiel 11:15 prps x p
269104 Ezekiel 11:15 conj x p
269197 Ezekiel 11:19 subs_a x p
269217 Ezekiel 11:20 prep p x
269242 Ezekiel 11:21 prps x p
269243 Ezekiel 11:21 conj x p
114955 Joshua 5:1 conj p x
115063 Joshua 5:5 subs_a p x
115064 Joshua 5:5 art p x
115079 Joshua 5:6 subs_a x p
115110 Joshua 5:6 subs_c x p
115123 Joshua 5:6 subs_a x p
115203 Joshua 5:10 subs_a x p
115225 Joshua 5:11 subs_a x p
115226 Joshua 5:11 conj x p
323551 Psalms 78:8 subs_a x p
323552 Psalms 78:8 verb_a x p
323553 Psalms 78:8 conj x p
323567 Psalms 78:9 verb_c x p
323586 Psalms 78:11 prps x p
323587 Psalms 78:11 conj x p
323630 Psalms 78:15 subs_a p x
323689 Psalms 78:20 advb x p
323823 Psalms 78:32 verb_c x p
323852 Psalms 78:35 verb_c x p
323931 Psalms 78:43 prps p x
323932 Psalms 78:43 conj p x
323941 Psalms 78:44 prps x p
323942 Psalms 78:44 conj x p
323990 Psalms 78:49 prps x p
324048 Psalms 78:53 verb_c x p
324082 Psalms 78:56 subs_a p x
324218 Psalms 78:70 subs_a x p
324238 Psalms 78:72 conj p x
194822 2 Kings 1:3 subs_c p x
194823 2 Kings 1:3 subs_c p x
194892 2 Kings 1:6 subs_c p x
194893 2 Kings 1:6 subs_c p x
194906 2 Kings 1:6 advb p x
194942 2 Kings 1:8 subs_a p x
194943 2 Kings 1:8 conj p x
194959 2 Kings 1:9 subs_a x p
195026 2 Kings 1:11 adjv_a x p
195027 2 Kings 1:11 conj x p
195084 2 Kings 1:13 adjv_a x p
195085 2 Kings 1:13 conj x p
195114 2 Kings 1:13 prps x p
195117 2 Kings 1:13 prps x p
195118 2 Kings 1:13 prde x p
195136 2 Kings 1:14 adjv_a x p
195137 2 Kings 1:14 conj x p
195185 2 Kings 1:16 subs_c p x
195186 2 Kings 1:16 subs_c p x
321642 Psalms 69:3 subs_c p x
321665 Psalms 69:5 verb_c x p
321669 Psalms 69:5 verb_c p x
321689 Psalms 69:7 verb_c p x
321691 Psalms 69:7 nmpr_a x p
321696 Psalms 69:7 verb_c p x
321758 Psalms 69:14 subs_a p x
321775 Psalms 69:15 verb_c x p
321775 Psalms 69:15 prps x p
321776 Psalms 69:15 conj x p
321820 Psalms 69:19 verb_c x p
321831 Psalms 69:20 verb_c x p
321865 Psalms 69:23 subs_a p x
321866 Psalms 69:23 conj p x
321924 Psalms 69:30 adjv_a x p
321925 Psalms 69:30 conj x p
321970 Psalms 69:35 subs_a x p
321971 Psalms 69:35 conj x p
170298 2 Samuel 17:1 subs_a x p
170373 2 Samuel 17:5 advb x p
170383 2 Samuel 17:5 advb x p
170468 2 Samuel 17:9 subs_a x p
170484 2 Samuel 17:9 art p x
170573 2 Samuel 17:12 prps x p
170574 2 Samuel 17:12 conj x p
170581 2 Samuel 17:12 advb x p
170609 2 Samuel 17:13 advb x p
170613 2 Samuel 17:14 nmpr_a x p
170614 2 Samuel 17:14 conj x p
170633 2 Samuel 17:14 nmpr_a x p
170639 2 Samuel 17:14 verb_c p x
170657 2 Samuel 17:15 prde x p
170658 2 Samuel 17:15 conj x p
170703 2 Samuel 17:16 subs_a x p
170704 2 Samuel 17:16 conj x p
170827 2 Samuel 17:21 verb_c p x
170872 2 Samuel 17:22 verb_c x p
170975 2 Samuel 17:27 nmpr_a p x
170976 2 Samuel 17:27 nmpr_a p x
170977 2 Samuel 17:27 conj p x
171016 2 Samuel 17:28 subs_a p x
171017 2 Samuel 17:29 conj p x
171022 2 Samuel 17:29 subs_a x p
171023 2 Samuel 17:29 conj x p
294148 Joel 1:6 subs_c p x
294173 Joel 1:8 subs_a x p
294174 Joel 1:8 verb_c x p
294180 Joel 1:9 subs_a x p
294181 Joel 1:9 conj x p
294222 Joel 1:12 subs_a x p
294251 Joel 1:13 verb_c x p
294258 Joel 1:13 subs_a x p
294259 Joel 1:13 conj x p
294266 Joel 1:14 adjv_a x p
294322 Joel 1:18 subs_c p x
294325 Joel 1:18 advb x p
294345 Joel 1:20 advb x p
294353 Joel 1:20 subs_a p x
294354 Joel 1:20 conj p x
217993 Isaiah 18:2 subs_a x p
217994 Isaiah 18:2 verb_a x p
217995 Isaiah 18:2 conj x p
218005 Isaiah 18:2 subs_a x p
218015 Isaiah 18:3 subs_a x p
218016 Isaiah 18:3 conj x p
218058 Isaiah 18:5 subs_a x p
218079 Isaiah 18:6 subs_a x p
218105 Isaiah 18:7 nmpr_a x p
218106 Isaiah 18:7 subs_a p x
218107 Isaiah 18:7 subs_a x p
218108 Isaiah 18:7 verb_a x p
218109 Isaiah 18:7 conj x p
218120 Isaiah 18:7 subs_a x p
218131 Isaiah 18:7 nmpr_a x p
248565 Jeremiah 27:5 subs_a x p
248572 Jeremiah 27:5 subs_a p x
248573 Jeremiah 27:5 conj p x
248581 Jeremiah 27:5 adjv_a x p
248582 Jeremiah 27:5 conj x p
248584 Jeremiah 27:5 prps x p
248595 Jeremiah 27:6 advb p x
248702 Jeremiah 27:9 prps x p
248703 Jeremiah 27:9 conj x p
248708 Jeremiah 27:9 prps x p
248709 Jeremiah 27:9 conj x p
248789 Jeremiah 27:12 prps x p
248790 Jeremiah 27:12 conj x p
248796 Jeremiah 27:13 prps x p
248797 Jeremiah 27:13 conj x p
248801 Jeremiah 27:13 subs_a x p
248862 Jeremiah 27:15 prps x p
248863 Jeremiah 27:15 conj x p
248872 Jeremiah 27:16 subs_a x p
248873 Jeremiah 27:16 conj x p
248904 Jeremiah 27:16 subs_a p x
248905 Jeremiah 27:16 conj p x
248939 Jeremiah 27:18 nmpr_a x p
248950 Jeremiah 27:18 nmpr_a x p
248951 Jeremiah 27:18 conj x p
248966 Jeremiah 27:19 subs_a p x
248967 Jeremiah 27:19 conj p x
249014 Jeremiah 27:21 nmpr_a x p
249024 Jeremiah 27:21 nmpr_a x p
249025 Jeremiah 27:21 conj x p
249030 Jeremiah 27:21 nmpr_a p x
122905 Joshua 18:4 subs_a x p
122932 Joshua 18:5 subs_a x p
122970 Joshua 18:7 subs_c p x
123060 Joshua 18:9 subs_a x p
123169 Joshua 18:13 nmpr_a x p
123179 Joshua 18:14 subs_a p x
123201 Joshua 18:14 subs_a p x
123202 Joshua 18:15 conj p x
123340 Joshua 18:21 nmpr_a p x
123341 Joshua 18:22 conj p x
123347 Joshua 18:23 conj p x
123354 Joshua 18:23 nmpr_a p x
123355 Joshua 18:24 conj p x
123366 Joshua 18:24 subs_a x p
123367 Joshua 18:24 conj x p
123369 Joshua 18:25 nmpr_a x p
123370 Joshua 18:25 conj x p
123374 Joshua 18:25 nmpr_a p x
123375 Joshua 18:26 conj p x
123383 Joshua 18:26 nmpr_a p x
123384 Joshua 18:27 conj p x
123389 Joshua 18:27 nmpr_a p x
123390 Joshua 18:28 conj p x
123391 Joshua 18:28 nmpr_a x p
123393 Joshua 18:28 nmpr_a x p
123394 Joshua 18:28 conj x p
123398 Joshua 18:28 nmpr_a p x
123401 Joshua 18:28 subs_a x p
123403 Joshua 18:28 subs_a x p
123404 Joshua 18:28 conj x p
359042 Song of songs 7:14 subs_a p x
359043 Song of songs 7:14 adjv_a x p
359044 Song of songs 7:14 advb x p
34453 Exodus 11:1 subs_a p x
34458 Exodus 11:1 subs_a x p
34459 Exodus 11:1 conj x p
34508 Exodus 11:3 advb x p
34512 Exodus 11:3 adjv_a x p
34520 Exodus 11:3 subs_a x p
34562 Exodus 11:5 subs_a p x
34563 Exodus 11:5 conj p x
34594 Exodus 11:7 subs_a x p
34604 Exodus 11:7 nmpr_a x p
34605 Exodus 11:7 conj x p
34611 Exodus 11:8 prps x p
34620 Exodus 11:8 prps x p
34621 Exodus 11:8 conj x p
34654 Exodus 11:9 nmpr_a p x
34655 Exodus 11:10 conj p x
171112 2 Samuel 18:3 conj x p
171129 2 Samuel 18:3 advb p x
171131 2 Samuel 18:3 subs_a x p
171310 2 Samuel 18:9 subs_a x p
171314 2 Samuel 18:9 subs_a p x
171315 2 Samuel 18:9 conj p x
171323 2 Samuel 18:10 subs_a x p
171394 2 Samuel 18:12 prps x p
171438 2 Samuel 18:14 subs_a x p
171447 2 Samuel 18:14 subs_c p x
171455 2 Samuel 18:15 subs_a x p
171457 2 Samuel 18:15 verb_c x p
171506 2 Samuel 18:17 adjv_a x p
171537 2 Samuel 18:18 verb_c p x
171655 2 Samuel 18:22 subs_c p x
171656 2 Samuel 18:22 subs_a x p
171740 2 Samuel 18:26 art x p
171884 2 Samuel 18:31 subs_c p x
171910 2 Samuel 18:32 verb_c x p
346964 Proverbs 1:4 subs_a x p
346965 Proverbs 1:4 conj x p
346978 Proverbs 1:6 subs_a x p
346982 Proverbs 1:6 adjv_a x p
346983 Proverbs 1:6 conj x p
346988 Proverbs 1:7 subs_a p x
346989 Proverbs 1:7 subs_a x p
346990 Proverbs 1:7 conj x p
346991 Proverbs 1:7 subs_a p x
347032 Proverbs 1:12 subs_a p x
347037 Proverbs 1:12 verb_c x p
347050 Proverbs 1:14 subs_a x p
347200 Proverbs 1:29 subs_c x p
262755 Jeremiah 51:1 verb_c x p
262758 Jeremiah 51:1 subs_a x p
262779 Jeremiah 51:3 prep x p
262781 Jeremiah 51:3 art p x
262785 Jeremiah 51:3 prep x p
262816 Jeremiah 51:5 nmpr_a x p
262960 Jeremiah 51:12 verb_c x p
262973 Jeremiah 51:14 nmpr_a x p
262977 Jeremiah 51:14 conj x p
263002 Jeremiah 51:16 subs_c p x
263003 Jeremiah 51:16 verb_c p x
263063 Jeremiah 51:19 nmpr_a x p
263082 Jeremiah 51:21 subs_a x p
263083 Jeremiah 51:21 conj x p
263088 Jeremiah 51:21 subs_a x p
263089 Jeremiah 51:21 conj x p
263112 Jeremiah 51:23 verb_a x p
263113 Jeremiah 51:23 conj x p
263118 Jeremiah 51:23 subs_a x p
263119 Jeremiah 51:23 conj x p
263208 Jeremiah 51:27 nmpr_a x p
263209 Jeremiah 51:27 nmpr_a x p
263210 Jeremiah 51:27 conj x p
263225 Jeremiah 51:28 nmpr_a x p
263352 Jeremiah 51:35 prps x p
263353 Jeremiah 51:35 conj x p
263363 Jeremiah 51:35 verb_c x p
263393 Jeremiah 51:37 subs_a x p
263394 Jeremiah 51:37 subs_a x p
263395 Jeremiah 51:37 conj x p
263467 Jeremiah 51:43 subs_a x p
263468 Jeremiah 51:43 conj x p
263469 Jeremiah 51:43 subs_a p x
263500 Jeremiah 51:44 advb x p
263579 Jeremiah 51:48 subs_a x p
263580 Jeremiah 51:48 conj x p
263589 Jeremiah 51:48 art x p
263599 Jeremiah 51:49 advb x p
263718 Jeremiah 51:57 prps x p
263719 Jeremiah 51:57 conj x p
263720 Jeremiah 51:57 prps x p
263736 Jeremiah 51:57 nmpr_a x p
263744 Jeremiah 51:58 nmpr_a x p
263750 Jeremiah 51:58 prps x p
289172 Ezekiel 46:4 adjv_a x p
289173 Ezekiel 46:4 conj x p
289177 Ezekiel 46:5 subs_a p x
289182 Ezekiel 46:5 conj p x
289190 Ezekiel 46:5 subs_a p x
289200 Ezekiel 46:6 subs_a x p
289203 Ezekiel 46:6 adjv_a x p
289204 Ezekiel 46:6 conj x p
289206 Ezekiel 46:6 subs_a x p
289207 Ezekiel 46:6 conj x p
289326 Ezekiel 46:11 subs_a p x
289327 Ezekiel 46:11 conj p x
289334 Ezekiel 46:11 subs_a p x
289344 Ezekiel 46:12 subs_a p x
289347 Ezekiel 46:12 subs_a p x
289382 Ezekiel 46:12 verb_c p x
289384 Ezekiel 46:13 subs_a x p
289386 Ezekiel 46:13 prps x p
289397 Ezekiel 46:13 subs_a x p
289409 Ezekiel 46:14 subs_a x p
289412 Ezekiel 46:14 subs_a p x
289446 Ezekiel 46:15 subs_a x p
289624 Ezekiel 46:22 subs_a p x
289625 Ezekiel 46:22 subs_a p x
289629 Ezekiel 46:22 subs_a p x
289630 Ezekiel 46:22 subs_a x p
318292 Psalms 48:1 subs_a p x
318332 Psalms 48:5 advb p x
318359 Psalms 48:9 nmpr_a x p
334644 Psalms 140:8 nmpr_a x p
334701 Psalms 140:14 advb x p
56901 Leviticus 9:2 subs_a x p
56903 Leviticus 9:2 subs_a x p
56905 Leviticus 9:2 subs_a x p
56906 Leviticus 9:2 conj x p
56907 Leviticus 9:2 subs_a x p
56931 Leviticus 9:3 subs_a x p
56936 Leviticus 9:3 subs_a p x
56937 Leviticus 9:4 conj p x
57013 Leviticus 9:7 prps x p
57014 Leviticus 9:7 conj x p
57073 Leviticus 9:9 subs_a p x
57074 Leviticus 9:10 conj p x
57100 Leviticus 9:10 nmpr_a p x
57101 Leviticus 9:11 conj p x
57104 Leviticus 9:11 subs_a x p
57105 Leviticus 9:11 conj x p
57145 Leviticus 9:13 conj p x
57290 Leviticus 9:21 conj p x
57293 Leviticus 9:21 subs_a x p
57294 Leviticus 9:21 conj x p
57324 Leviticus 9:22 subs_a x p
417705 2 Chronicles 23:4 verb_c x p
417710 2 Chronicles 23:4 subs_a x p
417711 2 Chronicles 23:4 conj x p
417746 2 Chronicles 23:6 conj x p
417749 2 Chronicles 23:6 subs_a x p
417750 2 Chronicles 23:6 conj x p
417751 2 Chronicles 23:6 art x p
417775 2 Chronicles 23:7 subs_a p x
417801 2 Chronicles 23:8 adjv_a x p
417802 2 Chronicles 23:8 conj x p
417817 2 Chronicles 23:8 verb_c x p
417821 2 Chronicles 23:8 verb_c x p
417887 2 Chronicles 23:10 subs_a x p
417888 2 Chronicles 23:10 conj x p
417917 2 Chronicles 23:11 nmpr_a x p
417979 2 Chronicles 23:13 art x p
417996 2 Chronicles 23:13 subs_a x p
418056 2 Chronicles 23:16 prps x p
418057 2 Chronicles 23:16 conj x p
418061 2 Chronicles 23:16 subs_a x p
418062 2 Chronicles 23:16 conj x p
418084 2 Chronicles 23:17 prps x p
418085 2 Chronicles 23:17 conj x p
118393 Joshua 10:2 subs_a p x
118394 Joshua 10:2 conj p x
118465 Joshua 10:5 nmpr_a x p
118467 Joshua 10:5 nmpr_a x p
118469 Joshua 10:5 nmpr_a x p
118471 Joshua 10:5 nmpr_a x p
118527 Joshua 10:7 prps p x
118528 Joshua 10:7 conj p x
118561 Joshua 10:9 advb p x
118638 Joshua 10:12 subs_c p x
118706 Joshua 10:14 prps x p
118707 Joshua 10:14 conj x p
118804 Joshua 10:20 nmpr_a x p
118805 Joshua 10:20 conj x p
118811 Joshua 10:20 adjv_a x p
118885 Joshua 10:23 nmpr_a x p
118888 Joshua 10:23 nmpr_a x p
118891 Joshua 10:23 nmpr_a x p
118894 Joshua 10:23 nmpr_a x p
118977 Joshua 10:26 subs_a x p
118991 Joshua 10:27 subs_c p x
118992 Joshua 10:27 verb_c p x
119044 Joshua 10:28 prps x p
119045 Joshua 10:28 conj x p
119083 Joshua 10:30 advb x p
119087 Joshua 10:30 nmpr_a p x
119088 Joshua 10:30 conj p x
119095 Joshua 10:30 subs_a p x
119096 Joshua 10:30 conj p x
119152 Joshua 10:32 subs_a p x
119153 Joshua 10:32 conj p x
119213 Joshua 10:35 subs_a p x
119214 Joshua 10:35 conj p x
119252 Joshua 10:37 subs_a p x
119253 Joshua 10:37 conj p x
119278 Joshua 10:37 prps x p
119279 Joshua 10:37 conj x p
119386 Joshua 10:41 nmpr_a p x
119387 Joshua 10:41 conj p x
119391 Joshua 10:41 nmpr_a p x
119392 Joshua 10:41 conj p x
119394 Joshua 10:41 nmpr_a p x
119395 Joshua 10:42 conj p x
119401 Joshua 10:42 prde x p
119402 Joshua 10:42 conj x p
321229 Psalms 68:1 subs_a p x
321303 Psalms 68:7 advb x p
321320 Psalms 68:9 advb x p
321355 Psalms 68:12 art x p
321401 Psalms 68:17 subs_a x p
321409 Psalms 68:17 advb x p
321415 Psalms 68:18 subs_a p x
321437 Psalms 68:19 advb x p
321441 Psalms 68:19 nmpr_a x p
321461 Psalms 68:21 nmpr_a x p
321467 Psalms 68:22 advb x p
321510 Psalms 68:26 subs_c p x
321511 Psalms 68:26 subs_a x p
101040 Deuteronomy 13:2 subs_a x p
101041 Deuteronomy 13:2 conj x p
101078 Deuteronomy 13:4 prps x p
101079 Deuteronomy 13:4 conj x p
101081 Deuteronomy 13:4 verb_c x p
101094 Deuteronomy 13:4 subs_c p x
101131 Deuteronomy 13:6 prps x p
101132 Deuteronomy 13:6 conj x p
101152 Deuteronomy 13:6 art p x
101179 Deuteronomy 13:7 prps p x
101180 Deuteronomy 13:7 conj p x
101205 Deuteronomy 13:7 prps x p
101206 Deuteronomy 13:7 conj x p
101218 Deuteronomy 13:8 art p x
101335 Deuteronomy 13:14 verb_c x p
101370 Deuteronomy 13:16 verb_c x p
101379 Deuteronomy 13:16 prps x p
101406 Deuteronomy 13:17 subs_a x p
101407 Deuteronomy 13:17 conj x p
353035 Proverbs 23:5 subs_c p x
353062 Proverbs 23:7 advb p x
353078 Proverbs 23:8 prps x p
353079 Proverbs 23:8 art x p
353162 Proverbs 23:17 conj x p
353170 Proverbs 23:18 conj x p
353172 Proverbs 23:18 subs_a p x
353192 Proverbs 23:20 verb_c x p
353199 Proverbs 23:21 verb_a x p
353200 Proverbs 23:21 conj x p
353225 Proverbs 23:23 subs_a x p
353226 Proverbs 23:23 conj x p
353288 Proverbs 23:29 subs_a x p
359305 Ecclesiastes 1:4 subs_a p x
359359 Ecclesiastes 1:7 subs_c p x
359406 Ecclesiastes 1:9 subs_c p x
359412 Ecclesiastes 1:10 subs_a p x
359429 Ecclesiastes 1:11 subs_c p x
359435 Ecclesiastes 1:11 advb x p
49214 Exodus 36:2 subs_c p x
49256 Exodus 36:3 subs_a x p
49314 Exodus 36:6 subs_a x p
49315 Exodus 36:6 conj x p
49351 Exodus 36:8 verb_c x p
49359 Exodus 36:8 subs_a x p
49360 Exodus 36:8 verb_a x p
49361 Exodus 36:8 conj x p
49364 Exodus 36:8 subs_a x p
49365 Exodus 36:8 conj x p
49375 Exodus 36:9 subs_a x p
49378 Exodus 36:9 subs_a x p
49379 Exodus 36:9 conj x p
49385 Exodus 36:9 subs_a p x
49389 Exodus 36:9 subs_a p x
49423 Exodus 36:11 subs_a x p
49449 Exodus 36:12 subs_a x p
49474 Exodus 36:13 subs_a x p
49503 Exodus 36:14 subs_a x p
49509 Exodus 36:15 subs_a x p
49547 Exodus 36:17 subs_a x p
49573 Exodus 36:18 subs_a x p
49590 Exodus 36:19 subs_a x p
49594 Exodus 36:19 subs_a x p
49616 Exodus 36:21 subs_a x p
49617 Exodus 36:21 conj x p
49623 Exodus 36:21 subs_a x p
49630 Exodus 36:22 subs_a x p
49659 Exodus 36:24 subs_a x p
49664 Exodus 36:24 subs_a x p
49682 Exodus 36:24 subs_a x p
49699 Exodus 36:25 subs_a x p
49702 Exodus 36:26 subs_a x p
49703 Exodus 36:26 prps x p
49727 Exodus 36:27 subs_a x p
49734 Exodus 36:28 verb_c x p
49754 Exodus 36:29 subs_a x p
49767 Exodus 36:30 subs_a x p
49768 Exodus 36:30 subs_a x p
49769 Exodus 36:30 conj x p
49770 Exodus 36:30 prps x p
49771 Exodus 36:30 subs_a p x
49776 Exodus 36:30 subs_a x p
49794 Exodus 36:31 subs_a x p
49870 Exodus 36:35 subs_a x p
49880 Exodus 36:36 subs_a x p
49891 Exodus 36:36 subs_a x p
49908 Exodus 36:37 subs_a x p
49914 Exodus 36:38 prps x p
49915 Exodus 36:38 subs_a x p
49916 Exodus 36:38 conj x p
49926 Exodus 36:38 prps x p
364006 Lamentations 2:2 subs_a x p
364007 Lamentations 2:2 conj x p
364150 Lamentations 2:9 subs_c p x
364152 Lamentations 2:9 advb x p
364198 Lamentations 2:11 subs_a x p
364199 Lamentations 2:11 conj x p
364217 Lamentations 2:12 subs_a x p
364268 Lamentations 2:14 subs_a x p
364269 Lamentations 2:14 conj x p
364284 Lamentations 2:15 inrg p x
364350 Lamentations 2:18 advb x p
364351 Lamentations 2:18 conj x p
364383 Lamentations 2:19 art p x
364418 Lamentations 2:21 subs_a x p
364419 Lamentations 2:21 conj x p
364421 Lamentations 2:21 prps x p
364422 Lamentations 2:21 conj x p
349968 Proverbs 12:7 subs_c p x
350027 Proverbs 12:13 subs_a p x
350049 Proverbs 12:15 subs_a p x
350072 Proverbs 12:18 subs_a x p
350095 Proverbs 12:20 verb_c x p
350155 Proverbs 12:27 subs_a x p
87388 Numbers 28:3 subs_a x p
87392 Numbers 28:4 subs_a x p
87407 Numbers 28:4 subs_a p x
87408 Numbers 28:5 conj p x
87411 Numbers 28:5 subs_a x p
87442 Numbers 28:7 subs_a x p
87466 Numbers 28:8 subs_a x p
87467 Numbers 28:8 conj x p
87484 Numbers 28:9 subs_a p x
87488 Numbers 28:9 subs_a x p
87498 Numbers 28:10 subs_c x p
87504 Numbers 28:10 subs_a x p
87505 Numbers 28:10 conj x p
87515 Numbers 28:11 subs_a x p
87517 Numbers 28:11 subs_a x p
87522 Numbers 28:11 subs_a x p
87524 Numbers 28:11 subs_a x p
87543 Numbers 28:12 subs_a x p
87558 Numbers 28:13 subs_a p x
87566 Numbers 28:13 subs_a x p
87630 Numbers 28:16 subs_a x p
87668 Numbers 28:19 subs_a x p
87672 Numbers 28:19 subs_a x p
87674 Numbers 28:19 subs_a x p
87678 Numbers 28:19 subs_a p x
87679 Numbers 28:19 conj p x
87681 Numbers 28:19 subs_a x p
87683 Numbers 28:19 subs_a p x
87694 Numbers 28:20 subs_a x p
87706 Numbers 28:21 subs_a x p
87711 Numbers 28:21 subs_a x p
87720 Numbers 28:22 subs_a x p
87808 Numbers 28:27 subs_a p x
87810 Numbers 28:27 subs_a p x
87812 Numbers 28:27 subs_a p x
87848 Numbers 28:30 subs_a x p
87858 Numbers 28:31 subs_a x p
87859 Numbers 28:31 conj x p
220068 Isaiah 25:1 subs_a p x
220140 Isaiah 25:6 nmpr_a x p
220155 Isaiah 25:6 subs_a x p
220157 Isaiah 25:6 subs_a x p
220169 Isaiah 25:7 art x p
220175 Isaiah 25:7 conj p x
220191 Isaiah 25:8 nmpr_a x p
280957 Ezekiel 33:8 prps x p
281027 Ezekiel 33:11 conj x p
281125 Ezekiel 33:14 subs_a x p
281126 Ezekiel 33:14 conj x p
281153 Ezekiel 33:16 subs_a x p
281154 Ezekiel 33:16 conj x p
281214 Ezekiel 33:21 subs_a x p
281247 Ezekiel 33:22 verb_c p x
281444 Ezekiel 33:30 subs_c p x
281508 Ezekiel 33:32 subs_c p x
317302 Psalms 41:8 subs_c x p
317303 Psalms 41:8 verb_c x p
317319 Psalms 41:10 advb x p
317348 Psalms 41:12 verb_c x p
317373 Psalms 41:14 intj x p
317374 Psalms 41:14 conj x p
300055 Micah 3:1 nmpr_a x p
300056 Micah 3:1 conj x p
300068 Micah 3:2 verb_c p x
300071 Micah 3:2 verb_c p x
300102 Micah 3:3 subs_a p x
300103 Micah 3:3 conj p x
300193 Micah 3:7 subs_c p x
300197 Micah 3:8 advb p x
300288 Micah 3:12 subs_a x p
356259 Ruth 2:2 subs_c x p
356366 Ruth 2:7 advb x p
356373 Ruth 2:7 verb_c p x
356421 Ruth 2:9 verb_c p x
356488 Ruth 2:11 subs_a x p
356578 Ruth 2:15 advb x p
356587 Ruth 2:16 advb x p
356618 Ruth 2:17 subs_a x p
356704 Ruth 2:20 verb_c x p
356760 Ruth 2:23 subs_a x p
338299 Job 9:4 subs_a x p
338300 Job 9:4 conj x p
338308 Job 9:5 art p x
338348 Job 9:9 subs_a x p
338351 Job 9:9 subs_a x p
338352 Job 9:9 conj x p
338407 Job 9:15 verb_c x p
338435 Job 9:19 subs_a p x
338464 Job 9:22 adjv_a x p
338465 Job 9:22 conj x p
338501 Job 9:26 subs_a x p
338509 Job 9:27 verb_c p x
338525 Job 9:29 inrg x p
268105 Ezekiel 9:2 subs_a p x
268106 Ezekiel 9:2 conj p x
268153 Ezekiel 9:3 subs_a p x
268154 Ezekiel 9:3 art p x
268215 Ezekiel 9:6 adjv_a x p
268226 Ezekiel 9:6 conj p x
268309 Ezekiel 9:9 nmpr_a x p
268310 Ezekiel 9:9 conj x p
268314 Ezekiel 9:9 subs_a x p
268334 Ezekiel 9:9 subs_c p x
268353 Ezekiel 9:11 subs_a x p
347451 Proverbs 3:2 subs_a x p
347452 Proverbs 3:2 conj x p
347476 Proverbs 3:4 subs_a x p
347477 Proverbs 3:4 conj x p
347531 Proverbs 3:10 subs_a p x
347532 Proverbs 3:10 conj p x
347558 Proverbs 3:13 subs_c p x
347610 Proverbs 3:18 verb_c p x
347770 Proverbs 3:35 subs_a p x
397744 1 Chronicles 12:1 verb_c x p
397749 1 Chronicles 12:2 verb_a x p
397750 1 Chronicles 12:2 conj x p
397769 1 Chronicles 12:3 nmpr_a p x
397770 1 Chronicles 12:3 conj p x
397861 1 Chronicles 12:9 verb_c p x
397919 1 Chronicles 12:15 subs_a p x
397921 1 Chronicles 12:15 adjv_a p x
397922 1 Chronicles 12:15 conj p x
398000 1 Chronicles 12:18 prep p x
398001 1 Chronicles 12:18 nega p x
398030 1 Chronicles 12:19 verb_c x p
398141 1 Chronicles 12:24 subs_c x p
398142 1 Chronicles 12:24 art x p
398161 1 Chronicles 12:25 verb_c p x
398169 1 Chronicles 12:25 subs_a x p
398170 1 Chronicles 12:25 verb_c x p
398291 1 Chronicles 12:34 verb_c p x
398304 1 Chronicles 12:34 prep p x
398305 1 Chronicles 12:34 nega p x
398317 1 Chronicles 12:35 subs_a x p
398318 1 Chronicles 12:35 conj x p
398319 1 Chronicles 12:35 subs_a p x
398328 1 Chronicles 12:36 verb_c p x
398358 1 Chronicles 12:38 adjv_a x p
398359 1 Chronicles 12:38 conj x p
398391 1 Chronicles 12:39 advb x p
398417 1 Chronicles 12:41 art p x
348039 Proverbs 5:2 subs_a p x
348040 Proverbs 5:2 conj p x
348059 Proverbs 5:4 subs_a p x
348143 Proverbs 5:13 verb_c x p
348155 Proverbs 5:14 subs_a x p
348156 Proverbs 5:14 conj x p
348193 Proverbs 5:19 subs_a x p
348194 Proverbs 5:19 conj x p
395594 1 Chronicles 8:3 nmpr_a p x
395595 1 Chronicles 8:4 conj p x
395600 1 Chronicles 8:4 nmpr_a p x
395601 1 Chronicles 8:5 conj p x
395616 1 Chronicles 8:6 verb_c x p
395621 1 Chronicles 8:6 nmpr_a p x
395622 1 Chronicles 8:7 conj p x
395666 1 Chronicles 8:9 nmpr_a p x
395667 1 Chronicles 8:10 conj p x
395703 1 Chronicles 8:12 nmpr_a x p
395704 1 Chronicles 8:12 conj x p
395715 1 Chronicles 8:13 verb_c x p
395720 1 Chronicles 8:13 verb_c x p
395721 1 Chronicles 8:13 nmpr_a p x
395722 1 Chronicles 8:14 conj p x
395726 1 Chronicles 8:14 nmpr_a p x
395727 1 Chronicles 8:15 conj p x
395732 1 Chronicles 8:15 nmpr_a p x
395733 1 Chronicles 8:16 conj p x
395748 1 Chronicles 8:17 nmpr_a p x
395749 1 Chronicles 8:18 conj p x
395762 1 Chronicles 8:19 nmpr_a p x
395763 1 Chronicles 8:20 conj p x
395768 1 Chronicles 8:20 nmpr_a p x
395769 1 Chronicles 8:21 conj p x
395782 1 Chronicles 8:22 nmpr_a p x
395783 1 Chronicles 8:23 conj p x
395788 1 Chronicles 8:23 nmpr_a p x
395789 1 Chronicles 8:24 conj p x
395794 1 Chronicles 8:24 nmpr_a p x
395795 1 Chronicles 8:25 conj p x
395806 1 Chronicles 8:26 nmpr_a p x
395807 1 Chronicles 8:27 conj p x
395839 1 Chronicles 8:30 nmpr_a p x
395840 1 Chronicles 8:30 conj p x
395847 1 Chronicles 8:30 nmpr_a p x
395848 1 Chronicles 8:31 conj p x
395853 1 Chronicles 8:31 nmpr_a p x
395854 1 Chronicles 8:32 conj p x
395911 1 Chronicles 8:35 nmpr_a p x
395912 1 Chronicles 8:36 conj p x
395990 1 Chronicles 8:40 subs_a x p
395991 1 Chronicles 8:40 conj x p
296538 Amos 5:2 subs_c p x
296539 Amos 5:2 verb_c p x
296553 Amos 5:3 art p x
296625 Amos 5:8 verb_c p x
296636 Amos 5:8 subs_a p x
296673 Amos 5:11 subs_c x p
296704 Amos 5:12 verb_c p x
296715 Amos 5:13 art x p
296778 Amos 5:16 intj x p
296788 Amos 5:16 verb_c x p
296793 Amos 5:17 subs_a p x
296850 Amos 5:20 subs_a p x
296851 Amos 5:20 conj p x
296869 Amos 5:22 subs_a x p
296870 Amos 5:22 conj x p
296901 Amos 5:25 subs_a x p
296902 Amos 5:25 conj x p
188449 1 Kings 15:5 advb x p
188539 1 Kings 15:11 art p x
188593 1 Kings 15:14 advb x p
188606 1 Kings 15:15 prps x p
188607 1 Kings 15:15 conj x p
188615 1 Kings 15:15 subs_a p x
188616 1 Kings 15:16 conj p x
188643 1 Kings 15:17 verb_a x p
188644 1 Kings 15:17 conj x p
188697 1 Kings 15:19 prps x p
188701 1 Kings 15:19 prps x p
188702 1 Kings 15:19 conj x p
188709 1 Kings 15:19 subs_a x p
188710 1 Kings 15:19 conj x p
188784 1 Kings 15:22 subs_c p x
188805 1 Kings 15:22 nmpr_a x p
188806 1 Kings 15:22 nmpr_a x p
188807 1 Kings 15:22 conj x p
331331 Psalms 119:2 subs_c p x
331470 Psalms 119:21 adjv_a x p
331494 Psalms 119:24 advb x p
331519 Psalms 119:27 verb_c x p
331596 Psalms 119:38 verb_c x p
331644 Psalms 119:44 subs_a x p
331645 Psalms 119:44 conj x p
331789 Psalms 119:63 verb_c x p
331830 Psalms 119:69 subs_a p x
331859 Psalms 119:72 subs_a x p
331860 Psalms 119:72 conj x p
331915 Psalms 119:79 verb_c p x
331956 Psalms 119:84 verb_c x p
331999 Psalms 119:90 subs_a x p
332000 Psalms 119:90 conj x p
332015 Psalms 119:91 prps p x
332016 Psalms 119:92 conj p x
332048 Psalms 119:96 subs_a p x
332061 Psalms 119:98 verb_c x p
332071 Psalms 119:99 verb_c x p
332179 Psalms 119:112 subs_a p x
332218 Psalms 119:118 subs_c p x
332242 Psalms 119:121 subs_a x p
332243 Psalms 119:121 conj x p
332248 Psalms 119:121 verb_c x p
332259 Psalms 119:123 prps x p
332260 Psalms 119:123 conj x p
332330 Psalms 119:132 verb_c x p
332373 Psalms 119:138 prps x p
332374 Psalms 119:138 conj x p
332375 Psalms 119:138 subs_a p x
332402 Psalms 119:142 subs_a p x
332403 Psalms 119:143 adjv_a x p
332404 Psalms 119:143 conj x p
332454 Psalms 119:150 verb_c x p
332504 Psalms 119:157 verb_c x p
332504 Psalms 119:157 prps x p
332505 Psalms 119:157 conj x p
332569 Psalms 119:165 verb_c x p
332589 Psalms 119:168 prps x p
332591 Psalms 119:168 prps p x
332592 Psalms 119:168 conj p x
332647 Psalms 119:176 subs_a x p
413500 2 Chronicles 14:1 art p x
413501 2 Chronicles 14:1 adjv_a p x
413502 2 Chronicles 14:1 conj p x
413503 2 Chronicles 14:1 art p x
413542 2 Chronicles 14:3 subs_a x p
413606 2 Chronicles 14:6 subs_c p x
413644 2 Chronicles 14:7 subs_a x p
413645 2 Chronicles 14:7 conj x p
413663 2 Chronicles 14:8 subs_a x p
413735 2 Chronicles 14:11 nmpr_a x p
413736 2 Chronicles 14:11 conj x p
413746 2 Chronicles 14:12 nmpr_a x p
413747 2 Chronicles 14:12 conj x p
413774 2 Chronicles 14:12 subs_a x p
413775 2 Chronicles 14:12 verb_a x p
413802 2 Chronicles 14:14 advb x p
In [36]:
for error in bible_section_dss:
    print(error)
17252 1QS 2:2 subs_a x p
17276 1QS 2:3 intj x p
17308 1QS 2:5 prps p x
17309 1QS 2:5 conj p x
17331 1QS 2:6 prps x p
17332 1QS 2:6 conj x p
17450 1QS 2:12 subs_c p x
17451 1QS 2:12 verb_c p x
17460 1QS 2:12 subs_c p x
17461 1QS 2:12 verb_c p x
17465 1QS 2:13 prep p x
17466 1QS 2:13 subs_c p x
17508 1QS 2:15 subs_c p x
17509 1QS 2:15 verb_c p x
17525 1QS 2:16 intj x p
17594 1QS 2:18 adjv_a x p
17598 1QS 2:18 prep p x
17599 1QS 2:18 subs_c p x
17602 1QS 2:19 subs_a x p
17603 1QS 2:19 conj x p
17643 1QS 2:20 prps x p
17644 1QS 2:20 conj x p
17656 1QS 2:22 subs_c p x
17657 1QS 2:22 verb_c p x
17665 1QS 2:22 intj x p
17670 1QS 2:23 subs_a x p
17690 1QS 2:24 prde x p
17710 1QS 2:25 prde x p
17757 1QS 2:27 subs_a x p
17758 1QS 2:27 conj x p
17891 1QS 2:36 subs_c p x
17940 1QS 2:38 subs_a x p
17941 1QS 2:38 conj x p
18918 1QS 4:1 verb_c p x
18957 1QS 4:2 subs_a p x
18958 1QS 4:2 conj p x
18993 1QS 4:3 conj x p
19047 1QS 4:3 subs_c p x
19048 1QS 4:3 verb_c p x
19118 1QS 4:6 verb_c p x
19122 1QS 4:6 verb_c p x
19125 1QS 4:6 conj p x
19183 1QS 4:8 art x p
19196 1QS 4:9 subs_a x p
19220 1QS 4:9 prep p x
19221 1QS 4:9 subs_c p x
19238 1QS 4:11 conj x p
19247 1QS 4:11 subs_c p x
19248 1QS 4:11 verb_c p x
19381 1QS 4:17 subs_c p x
19382 1QS 4:17 verb_c p x
19438 1QS 4:18 prps x p
19439 1QS 4:18 conj x p
19441 1QS 4:18 prps x p
19499 1QS 4:19 prps x p
19500 1QS 4:19 conj x p
19510 1QS 4:19 prps p x
19522 1QS 4:20 prps x p
19523 1QS 4:20 conj x p
19526 1QS 4:20 subs_a x p
19535 1QS 4:20 prps x p
19545 1QS 4:20 verb_c x p
19556 1QS 4:21 subs_a x p
19557 1QS 4:21 conj x p
19574 1QS 4:22 adjv_a x p
19575 1QS 4:22 conj x p
19626 1QS 4:26 subs_c p x
19661 1QS 4:29 subs_a x p
19662 1QS 4:29 subs_a x p
19672 1QS 4:29 subs_a x p
19757 1QS 4:32 advb x p
19758 1QS 4:32 conj x p
19759 1QS 4:32 subs_a p x
19760 1QS 4:32 subs_a p x
19791 1QS 4:33 subs_a p x
19809 1QS 4:35 adjv_a p x
19810 1QS 4:35 conj p x
19881 1QS 4:39 subs_a x p
19882 1QS 4:39 art x p
19915 1QS 4:41 subs_a p x
19916 1QS 4:41 conj p x
19976 1QS 4:42 subs_a x p
19978 1QS 4:42 subs_a x p
20010 1QS 4:43 verb_c p x
20068 1QS 4:46 prps x p
20069 1QS 4:46 conj x p
20079 1QS 4:47 advb p x
20106 1QS 4:48 prps x p
20107 1QS 4:48 conj x p
20109 1QS 4:48 prps x p
20129 1QS 4:49 subs_a x p
20130 1QS 4:49 conj x p
22055 1QS 7:5 prps x p
22059 1QS 7:6 subs_a x p
22066 1QS 7:6 subs_a x p
22069 1QS 7:6 prps x p
22070 1QS 7:6 conj x p
22072 1QS 7:6 subs_a x p
22077 1QS 7:6 subs_a x p
22093 1QS 7:7 subs_a x p
22094 1QS 7:7 conj x p
22107 1QS 7:7 prde x p
22125 1QS 7:8 prps p x
22126 1QS 7:8 conj p x
22136 1QS 7:9 subs_c p x
22137 1QS 7:9 verb_c p x
22146 1QS 7:9 subs_a x p
22147 1QS 7:9 conj x p
22180 1QS 7:11 subs_a x p
22181 1QS 7:11 conj x p
22190 1QS 7:11 subs_a x p
22191 1QS 7:11 conj x p
22211 1QS 7:13 verb_c x p
22212 1QS 7:13 prps x p
22213 1QS 7:13 conj x p
22221 1QS 7:13 subs_a x p
22236 1QS 7:14 subs_a x p
22237 1QS 7:14 conj x p
22241 1QS 7:14 subs_a x p
22242 1QS 7:14 conj x p
22244 1QS 7:14 subs_a x p
22263 1QS 7:16 prps x p
22264 1QS 7:16 conj x p
22271 1QS 7:16 subs_c p x
22313 1QS 7:19 subs_a x p
22314 1QS 7:19 conj x p
22317 1QS 7:19 subs_a x p
22436 1QS 7:27 subs_c p x
22437 1QS 7:27 verb_c p x
22509 1QS 7:31 subs_a x p
22510 1QS 7:31 conj x p
22527 1QS 7:32 subs_a x p
22531 1QS 7:32 subs_a x p
22532 1QS 7:32 conj x p
22544 1QS 7:33 subs_a x p
22573 1QS 7:33 subs_c p x
22574 1QS 7:33 verb_c p x
22578 1QS 7:33 subs_a x p
22583 1QS 7:33 verb_c p x
22586 1QS 7:33 verb_c p x
22589 1QS 7:33 verb_c p x
22603 1QS 7:34 prps x p
22625 1QS 7:35 verb_c x p
22636 1QS 7:35 verb_a x p
22637 1QS 7:35 conj x p
22660 1QS 7:37 prps p x
22661 1QS 7:37 conj p x
22674 1QS 7:38 subs_a x p
22683 1QS 7:39 verb_c x p
22693 1QS 7:39 subs_a x p
22694 1QS 7:39 conj x p
22701 1QS 7:39 subs_a x p
22702 1QS 7:39 conj x p
22704 1QS 7:39 subs_a x p
22735 1QS 7:40 subs_a x p
22736 1QS 7:40 conj x p
22758 1QS 7:42 prps x p
22760 1QS 7:42 prps x p
22762 1QS 7:42 prps x p
22764 1QS 7:42 verb_c x p
22769 1QS 7:42 subs_a p x
22770 1QS 7:42 conj p x
22771 1QS 7:42 verb_c p x
22787 1QS 7:44 subs_a p x
22804 1QS 7:45 subs_c x p
22896 1QS 7:50 subs_a x p
22897 1QS 7:50 conj x p
22968 1QS 7:54 subs_c x p
22969 1QS 7:54 art x p
22976 1QS 7:55 subs_c p x
23005 1QS 7:55 verb_c x p
23006 1QS 7:55 prps x p
23051 1QS 7:60 subs_a p x
23052 1QS 7:60 subs_a x p
23062 1QS 7:61 subs_a x p
23063 1QS 7:61 conj x p
16978 1QS 1:2 subs_a x p
16979 1QS 1:2 conj x p
16998 1QS 1:2 nmpr_a p x
16999 1QS 1:2 conj p x
17051 1QS 1:6 subs_a x p
17052 1QS 1:6 conj x p
17101 1QS 1:9 prps x p
17114 1QS 1:9 prps x p
17201 1QS 1:12 subs_a x p
17202 1QS 1:12 conj x p
20894 1QS 6:1 subs_a x p
20895 1QS 6:1 conj x p
20896 1QS 6:1 subs_a x p
20897 1QS 6:1 subs_a p x
20900 1QS 6:1 subs_c p x
20913 1QS 6:1 subs_a x p
20914 1QS 6:1 conj x p
20931 1QS 6:1 subs_a x p
20932 1QS 6:1 verb_a x p
20933 1QS 6:1 conj x p
20934 1QS 6:1 subs_a x p
20942 1QS 6:1 subs_a x p
20943 1QS 6:1 conj x p
21040 1QS 6:3 adjv_a x p
21041 1QS 6:3 conj x p
21064 1QS 6:4 subs_a p x
21065 1QS 6:4 conj p x
21066 1QS 6:4 subs_c p x
21099 1QS 6:5 subs_a x p
21172 1QS 6:7 subs_c p x
21173 1QS 6:7 art p x
21207 1QS 6:8 subs_a x p
21259 1QS 6:10 subs_c p x
21275 1QS 6:11 adjv_a x p
21276 1QS 6:11 subs_a p x
21375 1QS 6:15 subs_a x p
21393 1QS 6:15 subs_a x p
21397 1QS 6:16 subs_a x p
21403 1QS 6:16 art p x
21406 1QS 6:16 subs_a x p
21411 1QS 6:17 advb x p
21415 1QS 6:17 subs_a x p
21420 1QS 6:17 prps x p
21421 1QS 6:17 conj x p
21463 1QS 6:19 subs_a p x
21464 1QS 6:19 conj p x
21472 1QS 6:19 subs_a x p
21473 1QS 6:19 conj x p
21485 1QS 6:20 subs_a x p
21509 1QS 6:21 subs_a x p
21510 1QS 6:21 conj x p
21519 1QS 6:22 advb x p
21610 1QS 6:26 subs_a x p
21611 1QS 6:26 conj x p
21633 1QS 6:27 subs_a x p
21634 1QS 6:27 conj x p
21759 1QS 6:31 subs_a x p
21760 1QS 6:31 conj x p
21808 1QS 6:32 subs_c p x
21867 1QS 6:35 subs_a x p
21873 1QS 6:35 subs_a x p
21874 1QS 6:35 conj x p
21880 1QS 6:35 art p x
21912 1QS 6:36 subs_a x p
21913 1QS 6:36 conj x p
21959 1QS 6:38 verb_c p x
20894 1QS 6:1 subs_a x p
20895 1QS 6:1 conj x p
20896 1QS 6:1 subs_a x p
20897 1QS 6:1 subs_a p x
20900 1QS 6:1 subs_c p x
20913 1QS 6:1 subs_a x p
20914 1QS 6:1 conj x p
20931 1QS 6:1 subs_a x p
20932 1QS 6:1 verb_a x p
20933 1QS 6:1 conj x p
20934 1QS 6:1 subs_a x p
20942 1QS 6:1 subs_a x p
20943 1QS 6:1 conj x p
21040 1QS 6:3 adjv_a x p
21041 1QS 6:3 conj x p
21064 1QS 6:4 subs_a p x
21065 1QS 6:4 conj p x
21066 1QS 6:4 subs_c p x
21099 1QS 6:5 subs_a x p
21172 1QS 6:7 subs_c p x
21173 1QS 6:7 art p x
21207 1QS 6:8 subs_a x p
21259 1QS 6:10 subs_c p x
21275 1QS 6:11 adjv_a x p
21276 1QS 6:11 subs_a p x
21375 1QS 6:15 subs_a x p
21393 1QS 6:15 subs_a x p
21397 1QS 6:16 subs_a x p
21403 1QS 6:16 art p x
21406 1QS 6:16 subs_a x p
21411 1QS 6:17 advb x p
21415 1QS 6:17 subs_a x p
21420 1QS 6:17 prps x p
21421 1QS 6:17 conj x p
21463 1QS 6:19 subs_a p x
21464 1QS 6:19 conj p x
21472 1QS 6:19 subs_a x p
21473 1QS 6:19 conj x p
21485 1QS 6:20 subs_a x p
21509 1QS 6:21 subs_a x p
21510 1QS 6:21 conj x p
21519 1QS 6:22 advb x p
21610 1QS 6:26 subs_a x p
21611 1QS 6:26 conj x p
21633 1QS 6:27 subs_a x p
21634 1QS 6:27 conj x p
21759 1QS 6:31 subs_a x p
21760 1QS 6:31 conj x p
21808 1QS 6:32 subs_c p x
21867 1QS 6:35 subs_a x p
21873 1QS 6:35 subs_a x p
21874 1QS 6:35 conj x p
21880 1QS 6:35 art p x
21912 1QS 6:36 subs_a x p
21913 1QS 6:36 conj x p
21959 1QS 6:38 verb_c p x
18049 1QS 3:1 prps p x
18050 1QS 3:1 conj p x
18064 1QS 3:2 verb_a x p
18065 1QS 3:2 conj x p
18070 1QS 3:3 verb_c p x
18182 1QS 3:11 conj p x
18334 1QS 3:19 subs_a x p
18335 1QS 3:19 conj x p
18351 1QS 3:19 subs_a x p
18355 1QS 3:19 subs_a x p
18356 1QS 3:19 conj x p
18359 1QS 3:19 subs_a x p
18360 1QS 3:19 conj x p
18362 1QS 3:19 subs_a x p
18364 1QS 3:19 subs_a x p
18365 1QS 3:19 verb_a x p
18366 1QS 3:19 conj x p
18368 1QS 3:19 subs_a x p
18372 1QS 3:19 subs_a x p
18373 1QS 3:19 conj x p
18406 1QS 3:20 subs_a x p
18407 1QS 3:20 conj x p
18419 1QS 3:20 subs_a x p
18420 1QS 3:20 conj x p
18447 1QS 3:21 subs_a x p
18450 1QS 3:21 subs_a x p
18451 1QS 3:21 conj x p
18453 1QS 3:21 subs_a p x
18457 1QS 3:21 adjv_a x p
18458 1QS 3:21 conj x p
18470 1QS 3:21 subs_a x p
18473 1QS 3:21 subs_a x p
18474 1QS 3:21 conj x p
18476 1QS 3:21 subs_a x p
18482 1QS 3:21 subs_a x p
18484 1QS 3:21 subs_a x p
18485 1QS 3:21 conj x p
18487 1QS 3:21 subs_a x p
18489 1QS 3:21 subs_a x p
18490 1QS 3:21 conj x p
18498 1QS 3:21 subs_a x p
18499 1QS 3:21 conj x p
18501 1QS 3:21 subs_a p x
18502 1QS 3:22 conj p x
18522 1QS 3:22 subs_a x p
18526 1QS 3:22 subs_a x p
18527 1QS 3:22 conj x p
18545 1QS 3:23 subs_a x p
18546 1QS 3:23 conj x p
18555 1QS 3:23 prep p x
18556 1QS 3:23 subs_c p x
18557 1QS 3:23 subs_a x p
18558 1QS 3:23 conj x p
18608 1QS 3:26 subs_a x p
18647 1QS 3:29 prps x p
18648 1QS 3:29 conj x p
18671 1QS 3:30 subs_a p x
18745 1QS 3:32 adjv_a x p
18746 1QS 3:32 conj x p
18769 1QS 3:34 subs_c p x
18781 1QS 3:35 subs_a x p
18782 1QS 3:35 conj x p
18789 1QS 3:36 subs_a x p
18790 1QS 3:36 conj x p
18798 1QS 3:36 subs_a x p
18799 1QS 3:36 conj x p
18820 1QS 3:37 subs_a x p
18849 1QS 3:39 adjv_a x p
18850 1QS 3:39 conj x p
20330 1QS 5:3 subs_a x p
20339 1QS 5:4 subs_c x p
20340 1QS 5:4 art x p
20343 1QS 5:4 subs_c x p
20352 1QS 5:4 subs_a x p
20353 1QS 5:4 conj x p
20395 1QS 5:5 subs_a x p
20412 1QS 5:6 subs_a x p
20422 1QS 5:6 subs_a x p
20438 1QS 5:6 subs_a x p
20458 1QS 5:6 subs_a x p
20468 1QS 5:7 subs_a x p
20497 1QS 5:9 subs_a x p
20511 1QS 5:10 subs_a x p
20534 1QS 5:12 art p x
20555 1QS 5:13 advb p x
20570 1QS 5:13 advb p x
20575 1QS 5:13 subs_a x p
20588 1QS 5:14 subs_a x p
20604 1QS 5:15 subs_a x p
20605 1QS 5:15 subs_a p x
20606 1QS 5:16 conj p x
20617 1QS 5:16 subs_a x p
20637 1QS 5:17 subs_a x p
20650 1QS 5:18 subs_a x p
20679 1QS 5:20 subs_a x p
20730 1QS 5:23 subs_a x p
20790 1QS 5:26 subs_a x p
20854 1QS 5:28 subs_a p x
20855 1QS 5:29 conj p x
20330 1QS 5:3 subs_a x p
20339 1QS 5:4 subs_c x p
20340 1QS 5:4 art x p
20343 1QS 5:4 subs_c x p
20352 1QS 5:4 subs_a x p
20353 1QS 5:4 conj x p
20395 1QS 5:5 subs_a x p
20412 1QS 5:6 subs_a x p
20422 1QS 5:6 subs_a x p
20438 1QS 5:6 subs_a x p
20458 1QS 5:6 subs_a x p
20468 1QS 5:7 subs_a x p
20497 1QS 5:9 subs_a x p
20511 1QS 5:10 subs_a x p
20534 1QS 5:12 art p x
20555 1QS 5:13 advb p x
20570 1QS 5:13 advb p x
20575 1QS 5:13 subs_a x p
20588 1QS 5:14 subs_a x p
20604 1QS 5:15 subs_a x p
20605 1QS 5:15 subs_a p x
20606 1QS 5:16 conj p x
20617 1QS 5:16 subs_a x p
20637 1QS 5:17 subs_a x p
20650 1QS 5:18 subs_a x p
20679 1QS 5:20 subs_a x p
20730 1QS 5:23 subs_a x p
20790 1QS 5:26 subs_a x p
20854 1QS 5:28 subs_a p x
20855 1QS 5:29 conj p x
18918 1QS 4:1 verb_c p x
18957 1QS 4:2 subs_a p x
18958 1QS 4:2 conj p x
18993 1QS 4:3 conj x p
19047 1QS 4:3 subs_c p x
19048 1QS 4:3 verb_c p x
19118 1QS 4:6 verb_c p x
19122 1QS 4:6 verb_c p x
19125 1QS 4:6 conj p x
19183 1QS 4:8 art x p
19196 1QS 4:9 subs_a x p
19220 1QS 4:9 prep p x
19221 1QS 4:9 subs_c p x
19238 1QS 4:11 conj x p
19247 1QS 4:11 subs_c p x
19248 1QS 4:11 verb_c p x
19381 1QS 4:17 subs_c p x
19382 1QS 4:17 verb_c p x
19438 1QS 4:18 prps x p
19439 1QS 4:18 conj x p
19441 1QS 4:18 prps x p
19499 1QS 4:19 prps x p
19500 1QS 4:19 conj x p
19510 1QS 4:19 prps p x
19522 1QS 4:20 prps x p
19523 1QS 4:20 conj x p
19526 1QS 4:20 subs_a x p
19535 1QS 4:20 prps x p
19545 1QS 4:20 verb_c x p
19556 1QS 4:21 subs_a x p
19557 1QS 4:21 conj x p
19574 1QS 4:22 adjv_a x p
19575 1QS 4:22 conj x p
19626 1QS 4:26 subs_c p x
19661 1QS 4:29 subs_a x p
19662 1QS 4:29 subs_a x p
19672 1QS 4:29 subs_a x p
19757 1QS 4:32 advb x p
19758 1QS 4:32 conj x p
19759 1QS 4:32 subs_a p x
19760 1QS 4:32 subs_a p x
19791 1QS 4:33 subs_a p x
19809 1QS 4:35 adjv_a p x
19810 1QS 4:35 conj p x
19881 1QS 4:39 subs_a x p
19882 1QS 4:39 art x p
19915 1QS 4:41 subs_a p x
19916 1QS 4:41 conj p x
19976 1QS 4:42 subs_a x p
19978 1QS 4:42 subs_a x p
20010 1QS 4:43 verb_c p x
20068 1QS 4:46 prps x p
20069 1QS 4:46 conj x p
20079 1QS 4:47 advb p x
20106 1QS 4:48 prps x p
20107 1QS 4:48 conj x p
20109 1QS 4:48 prps x p
20129 1QS 4:49 subs_a x p
20130 1QS 4:49 conj x p
22055 1QS 7:5 prps x p
22059 1QS 7:6 subs_a x p
22066 1QS 7:6 subs_a x p
22069 1QS 7:6 prps x p
22070 1QS 7:6 conj x p
22072 1QS 7:6 subs_a x p
22077 1QS 7:6 subs_a x p
22093 1QS 7:7 subs_a x p
22094 1QS 7:7 conj x p
22107 1QS 7:7 prde x p
22125 1QS 7:8 prps p x
22126 1QS 7:8 conj p x
22136 1QS 7:9 subs_c p x
22137 1QS 7:9 verb_c p x
22146 1QS 7:9 subs_a x p
22147 1QS 7:9 conj x p
22180 1QS 7:11 subs_a x p
22181 1QS 7:11 conj x p
22190 1QS 7:11 subs_a x p
22191 1QS 7:11 conj x p
22211 1QS 7:13 verb_c x p
22212 1QS 7:13 prps x p
22213 1QS 7:13 conj x p
22221 1QS 7:13 subs_a x p
22236 1QS 7:14 subs_a x p
22237 1QS 7:14 conj x p
22241 1QS 7:14 subs_a x p
22242 1QS 7:14 conj x p
22244 1QS 7:14 subs_a x p
22263 1QS 7:16 prps x p
22264 1QS 7:16 conj x p
22271 1QS 7:16 subs_c p x
22313 1QS 7:19 subs_a x p
22314 1QS 7:19 conj x p
22317 1QS 7:19 subs_a x p
22436 1QS 7:27 subs_c p x
22437 1QS 7:27 verb_c p x
22509 1QS 7:31 subs_a x p
22510 1QS 7:31 conj x p
22527 1QS 7:32 subs_a x p
22531 1QS 7:32 subs_a x p
22532 1QS 7:32 conj x p
22544 1QS 7:33 subs_a x p
22573 1QS 7:33 subs_c p x
22574 1QS 7:33 verb_c p x
22578 1QS 7:33 subs_a x p
22583 1QS 7:33 verb_c p x
22586 1QS 7:33 verb_c p x
22589 1QS 7:33 verb_c p x
22603 1QS 7:34 prps x p
22625 1QS 7:35 verb_c x p
22636 1QS 7:35 verb_a x p
22637 1QS 7:35 conj x p
22660 1QS 7:37 prps p x
22661 1QS 7:37 conj p x
22674 1QS 7:38 subs_a x p
22683 1QS 7:39 verb_c x p
22693 1QS 7:39 subs_a x p
22694 1QS 7:39 conj x p
22701 1QS 7:39 subs_a x p
22702 1QS 7:39 conj x p
22704 1QS 7:39 subs_a x p
22735 1QS 7:40 subs_a x p
22736 1QS 7:40 conj x p
22758 1QS 7:42 prps x p
22760 1QS 7:42 prps x p
22762 1QS 7:42 prps x p
22764 1QS 7:42 verb_c x p
22769 1QS 7:42 subs_a p x
22770 1QS 7:42 conj p x
22771 1QS 7:42 verb_c p x
22787 1QS 7:44 subs_a p x
22804 1QS 7:45 subs_c x p
22896 1QS 7:50 subs_a x p
22897 1QS 7:50 conj x p
22968 1QS 7:54 subs_c x p
22969 1QS 7:54 art x p
22976 1QS 7:55 subs_c p x
23005 1QS 7:55 verb_c x p
23006 1QS 7:55 prps x p
23051 1QS 7:60 subs_a p x
23052 1QS 7:60 subs_a x p
23062 1QS 7:61 subs_a x p
23063 1QS 7:61 conj x p