davanstrien/query-to-dataset-viewer-descriptions
Viewer • Updated • 11k • 90 • 5
How to use davanstrien/query-to-dataset-viewer-descriptions with sentence-transformers:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("davanstrien/query-to-dataset-viewer-descriptions", trust_remote_code=True)
sentences = [
"USER_QUERY: mental health conversation dataset",
"NEGATIVE: DATASET_NAME: \"llmModeluser/Therapy_sessions_dataset\"\nFEATURES: {'conversations': {'dtype': 'string', '_type': 'Value'}, 'id': {'dtype': 'string', '_type': 'Value'}}\nDATA SAMPLE:\n[\n {\n \"row_idx\": 0,\n \"row\": {\n \"conversations\": \"[{'from': 'human', 'value': \\\"I've been feeling so sad and overwhelmed lately. Work has become such a massive source of stress for me.\\\"}\\n {'from': 'gpt', 'value': \\\"Hey there, I'm here to listen and support you. It sounds like work has been really challenging lately. Can you tell me more about what's been going on?\\\"}\\n {'from': 'human', 'value': \\\"I recently got a promotion at work, which I thought would be exciting. But the added responsibilities and pressure have just taken a toll on my mental health. It's been a really moving experience for me.\\\"}\\n {'from': 'gpt', 'value': \\\"I can understand how it can be overwhelming when we're faced with higher expectations. It's okay to acknowledge your emotions and allow yourself to feel sad in this situation. It's an important part of the healing process. What specific challenges have you been facing at work?\\\"}\\n {'from': 'human', 'value': \\\"Well, the workload has increased significantly, and I find it hard to maintain a work-life balance. I've been staying late at the office, and it feels like I'm constantly under a pile of never-ending tasks. It's just so hard to keep up, and it's impacting my overall well-being.\\\"}\\n {'from': 'gpt', 'value': \\\"It sounds like you're dealing with a lot of pressure to perform and succeed. Remember, it's crucial to take care of yourself, both mentally and physically. A healthy work-life balance is essential. Have you tried any strategies to cope with the added workload?\\\"}\\n {'from': 'human', 'value': \\\"I've been trying to prioritize my tasks and delegate whenever possible. I've also started practicing meditation during my breaks to help manage stress. But sometimes, it feels like no matter what I do, I can't catch a break. It's been a constant struggle.\\\"}\\n {'from': 'gpt', 'value': \\\"It's great to hear that you're already implementing some helpful strategies. Remember, progress takes time, and it's okay to have setbacks. In addition to what you're already doing, I encourage you to also communicate with your supervisor or team about your workload and discuss possible solutions together.\\\"}\\n {'from': 'human', 'value': \\\"You're right. I haven't really opened up about my struggles to my coworkers or supervisor. I guess I've been afraid of appearing weak or incapable. How can I approach this discussion without feeling vulnerable?\\\"}\\n {'from': 'gpt', 'value': \\\"It's completely normal to feel that way, but remember, asking for support is a strength, not a weakness. Start by scheduling a conversation with your supervisor or a trusted colleague in a private and comfortable setting. Be honest about your challenges and express your willingness to find solutions together. Remember, you're not alone in this.\\\"}\\n {'from': 'human', 'value': \\\"Thank you for your understanding and guidance. I appreciate the reminder that I don't have to face this alone. I'll gather my courage and initiate that conversation soon. I need to prioritize my well-being and find a healthier balance.\\\"}\\n {'from': 'gpt', 'value': \\\"You're very welcome! I'm here to support you every step of the way. Taking care of yourself should always be a priority. Remember to be kind to yourself and celebrate your progress, no matter how small it may seem. You've got this!\\\"}]\",\n \"id\": \"identity_0\"\n },\n \"truncated_cells\": []\n },\n {\n \"row_idx\": 1,\n \"row\": {\n \"conversations\": \"[{'from': 'human', 'value': \\\"Hi, I'm feeling really scared about something and I need some advice. It's about friendship.\\\"}\\n {'from': 'gpt', 'value': \\\"Hello there! I'm here to listen and offer support. Tell me more about what's going on with your friendship. What specifically is making you feel scared?\\\"}\\n {'from': 'human', 'value': \\\"Well, lately, I've been feeling like my friends don't value me as much as I value them. It's like I'm always the one reaching out and making plans, but they never initiate anything. It's making me doubt if our friendship is genuine.\\\"}\\n {'from': 'gpt', 'value': \\\"I understand how disheartening that can be. It's important to feel valued and appreciated in any relationship. Have you talked to your friends about how you're feeling?\\\"}\\n {'from': 'human', 'value': \\\"No, I haven't. I'm afraid that they'll think I'm being needy or that they'll get defensive. I don't want to ruin our friendship by bringing it up.\\\"}\\n {'from': 'gpt', 'value': \\\"It's normal to feel hesitant about having difficult conversations, but addressing your concerns is a crucial step towards building stronger connections. Before jumping to conclusions, it's important to communicate openly and honestly. You deserve to express your feelings.\\\"}\\n {'from': 'human', 'value': \\\"You're right, I should talk to them. But how do I approach the conversation without sounding accusatory or angry?\\\"}\\n {'from': 'gpt', 'value': 'That\\\\'s a great question! It can be helpful to use \\\"I\\\" statements to express how you feel, rather than placing blame on others. For example, you can say, \\\"I\\\\'ve been feeling a bit overlooked lately, and I wanted to talk about our friendship to ensure we\\\\'re on the same page.\\\"'}\\n {'from': 'human', 'value': \\\"I see, so it's important to frame it as a dialogue rather than confrontational. That makes sense.\\\"}\\n {'from': 'gpt', 'value': 'Absolutely! Opening up a conversation can lead to better understanding and growth. Remember, your feelings are valid, and a healthy friendship should provide a safe space to express them. If your friends truly care about you, they will listen and try to understand your perspective.'}\\n {'from': 'human', 'value': \\\"It's reassuring to hear that. I'll try to gather the courage to talk to them. But what if they don't respond well? What if they dismiss my concerns?\\\"}\\n {'from': 'gpt', 'value': \\\"It's natural to worry about how others might react, but remember, you cannot control their responses. What you can control is how you handle the situation. If they dismiss your concerns, it might be an indication that they are not as invested in the friendship as you would like. In that case, it's essential to focus on surrounding yourself with people who appreciate and support you.\\\"}\\n {'from': 'human', 'value': \\\"That's true. I shouldn't hold onto toxic relationships. It's just hard to let go sometimes, you know?\\\"}\\n {'from': 'gpt', 'value': \\\"Letting go can be challenging, especially when we have invested time and energy into a friendship. It's essential to prioritize your well-being and surround yourself with those who uplift you. Remember, you deserve friendships that nourish your self-esteem and bring positivity into your life.\\\"}\\n {'from': 'human', 'value': 'Thank you for reminding me of my worth. I appreciate your advice and support.'}\\n {'from': 'gpt', 'value': \\\"You're very welcome! Building healthy friendships is a journey, and you have taken the first step by recognizing the need for change. Remember to be gentle with yourself as you navigate through this process. You're doing great!\\\"}\\n {'from': 'human', 'value': 'I will, thank you. I feel much better after talking to you.'}\\n {'from': 'gpt', 'value': \\\"I'm glad to hear that. Remember, I'm here for you whenever you need someone to talk to. Don't hesitate to reach out. You've got this!\\\"}]\",\n \"id\": \"identity_1\"\n },\n \"truncated_cells\": []\n }\n]",
"HUB_DATASET_PREVIEW: DATASET_NAME: \"emozilla/dolma-v1_7-arxiv\"\nFEATURES: {'text': {'dtype': 'string', '_type': 'Value'}, 'id': {'dtype': 'string', '_type': 'Value'}, 'metadata': {'file_path': {'dtype': 'string', '_type': 'Value'}}}\nDATA SAMPLE:\n[\n {\n \"row_idx\": 0,\n \"row\": {\n \"text\": \"\\\\section{Introduction}\\nLet $G$ be a simple undirected graph with the \\\\textit{vertex set} $V(G)$ and the \\\\textit{edge set} $E(G)$. A vertex with degree one is called a \\\\textit{pendant vertex}. The distance between the vertices $u$ and $v$ in graph $G$ is denoted by $d_G(u,v)$. A cycle $C$ is called \\\\textit{chordless} if $C$ has no \\\\textit{cycle chord} (that is an edge not in the edge set of $C$ whose endpoints lie on the vertices of $C$).\\nThe \\\\textit{Induced subgraph} on vertex set $S$ is denoted by $\\\\langle S\\\\rangle$. A path that starts in $v$ and ends in $u$ is denoted by $\\\\stackrel\\\\frown{v u}$.\\nA \\\\textit{traceable} graph is a graph that possesses a Hamiltonian path.\\nIn a graph $G$, we say that a cycle $C$ is \\\\textit{formed by the path} $Q$ if $ | E(C) \\\\setminus E(Q) | = 1 $. So every vertex of $C$ belongs to $V(Q)$.\\n\\nIn 2011 the following conjecture was proposed:\\n\\\\begin{conjecture}(Hoffmann-Ostenhof \\\\cite{hoffman})\\nLet $G$ be a connected cubic graph. Then $G$ has a decomposition into a spanning tree, a matching and a family of cycles.\\n\\n\\\\end{conjecture}\\nConjecture \\\\theconjecture$\\\\,$ also appears in Problem 516 \\\\cite{cameron}. There are a few partial results known for Conjecture \\\\theconjecture. Kostochka \\\\cite{kostocha} noticed that the Petersen graph, the prisms over cycles, and many other graphs have a decomposition desired in Conjecture \\\\theconjecture. Ozeki and Ye \\\\cite{ozeki} proved that the conjecture holds for 3-connected cubic plane graphs. Furthermore, it was proved by Bachstein \\\\cite{bachstein} that Conjecture \\\\theconjecture$\\\\,$ is true for every 3-connected cubic graph embedded in torus or Klein-bottle. Akbari, Jensen and Siggers \\\\cite[Theorem 9]{akbari} showed that Conjecture \\\\theconjecture$\\\\,$ is true for Hamiltonian cubic graphs.\\n\\nIn this paper, we show that Conjecture \\\\theconjecture$\\\\,$ holds for traceable cubic graphs.\\n\\\\section{Results}\\nBefore proving the main result, we need the following lemma.\\n\\\\begin{lemma}\\n\\\\label{lemma:1}\\nLet $G$ be a cubic graph. Suppose that $V(G)$ can be partitioned into a tree $T$ and finitely many cycles such that there is no edge between any pair of cycles (not necessarily distinct cycles), and every pendant vertex of $T$ is adjacent to at least one vertex of a cycle. Then, Conjecture \\\\theconjecture$\\\\,$ holds for $G$.\\n\\\\end{lemma}\\n\\\\begin{proof}\\nBy assumption, every vertex of each cycle in the partition is adjacent to exactly one vertex of $T$. Call the set of all edges with one endpoint in a cycle and another endpoint in $T$ by $Q$.\\nClearly, the induced subgraph on $E(T) \\\\cup Q$ is a spanning tree of $G$. We call it $T'$. Note that every edge between a pendant vertex of $T$ and the union of cycles in the partition is also contained in $T'$. Thus, every pendant vertex of $T'$ is contained in a cycle of the partition. Now, consider the graph $H = G \\\\setminus E(T')$. For every $v \\\\in V(T)$, $d_H(v) \\\\leq 1$. So Conjecture \\\\theconjecture$\\\\,$ holds for $G$. \\\\vspace{1em}\\n\\\\end{proof}\\n\\n\\n\\\\noindent\\\\textbf{Remark 1.}\\n\\\\label{remark:1}\\nLet $C$ be a cycle formed by the path $Q$. Then clearly there exists a chordless cycle formed by $Q$.\\n\\nNow, we are in a position to prove the main result.\\n\\n\\\\begin{theorem}\\nConjecture \\\\theconjecture$\\\\,$ holds for traceable cubic graphs.\\n\\\\end{theorem}\\n\\\\begin{proof}\\nLet $G$ be a traceable cubic graph and $P : v_1, \\\\dots, v_n$ be a Hamiltonian path in $G$. By \\\\cite[Theorem 9]{akbari}, Conjecture A holds for $v_1 v_n \\\\in E(G)$. Thus we can assume that $v_1 v_n \\\\notin E(G)$. Let $v_1 v_j, v_1 v_{j'}, v_i v_n, v_{i'} v_n \\\\in E(G)\\\\setminus E(P)$ and $j' < j < n$, $1 < i < i'$. Two cases can occur:\\n\\\\begin{enumerate}[leftmargin=0pt,label=]\\n\\\\item\\n\\\\textbf{Case 1.}\\nAssume that $i < j$. Consider the following graph in Figure \\\\ref{fig:overlapping} in which the thick edges denote the path $P$. Call the three paths between $v_j$ and $v_i$, from the left to the right, by $P_1$, $P_2$ and $P_3$, respectively (note that $P_1$ contains the edge $e'$ and $P_3$ contains the edge $e$).\\n\\n\\\\begin{figure}[H]\\n \\\\begin{center}\\n \\\\includegraphics[width=40mm]{engImages/overlapping.pdf}\\n \\\\caption{Paths $P_1$, $P_2$ and $P_3$}\\n \\\\label{fig:overlapping}\\n \\\\end{center}\\n\\\\end{figure}\\n\\n\\nIf $P_2$ has order $2$, then $G$ is Hamiltonian and so by \\\\cite[Theorem 9]{akbari} Conjecture \\\\theconjecture$\\\\,$ holds. Thus we can assume that $P_1$, $P_2$ and $P_3$ have order at least $3$. Now, consider the following subcases:\\\\\\\\\\n\\n\\\\begin{enumerate}[leftmargin=0pt,label=]\\n\\\\label{case:1}\\n\\\\item \\\\textbf{Subcase 1.} There is no edge between $V(P_r)$ and $V(P_s)$ for $1 \\\\leq r < s \\\\leq 3$. Since every vertex of $P_i$ has degree 3 for every $i$, by \\\\hyperref[remark:1]{Remark 1}$\\\\,$ there are two chordless cycles $C_1$ and $C_2$ formed by $P_1$ and $P_2$, respectively.\\nDefine a tree $T$ with the edge set\\n$$ E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big) \\\\rangle\\\\Big) \\\\bigcap \\\\big(\\\\bigcup_{i=1}^3 E(P_i)\\\\big).$$\\nNow, apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T, C_1, C_2\\\\}$.\\\\\\\\\\n\\n\\\\item \\\\textbf{Subcase 2.}\\n\\\\label{case:edge}\\nThere exists at least one edge between some $P_r$ and $P_s$, $r<s$. With no loss of generality, assume that $r=1$ and $s=2$. Suppose that $ab \\\\in E(G)$, where $a \\\\in V(P_1)$, $b \\\\in V(P_2)$ and $d_{P_1}(v_j, a) + d_{P_2}(v_j, b)$ is minimum.\\n\\n\\\\begin{figure}[H]\\n \\\\begin{center}\\n \\\\includegraphics[width=40mm]{engImages/ab.pdf}\\n \\\\caption{The edge $ab$ between $P_1$ and $P_2$}\\n \\\\label{fig:ab}\\n \\\\end{center}\\n\\\\end{figure}\\n\\nThree cases occur: \\\\\\\\\\n\\n(a) There is no chordless cycle formed by either of the paths $\\\\stackrel\\\\frown{v_j a}$ or $\\\\stackrel\\\\frown{v_j b}$. Let $C$ be the chordless cycle $\\\\stackrel\\\\frown{v_j a}\\\\stackrel\\\\frown{ b v_j}$. Define $T$ with the edge set\\n$$ E\\\\Big(\\\\langle V(G) \\\\setminus V(C)\\\\rangle\\\\Big) \\\\bigcap \\\\big(\\\\bigcup_{i=1}^3 E(P_i)\\\\big).$$\\nNow, apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T,C\\\\}$.\\t\\\\\\\\\\n\\n(b) There are two chordless cycles, say $C_1$ and $C_2$, respectively formed by the paths $\\\\stackrel\\\\frown{v_j a}$ and $\\\\stackrel\\\\frown{v_j b}$. Now, consider the partition $C_1$, $C_2$ and the tree induced on the following edges,\\n$$E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big) \\\\rangle\\\\Big) \\\\; \\\\bigcap \\\\; E\\\\Big(\\\\bigcup_{i=1}^3 P_i\\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1}.\\\\\\\\\\n\\n(c) With no loss of generality, there exists a chordless cycle formed by the path $\\\\stackrel\\\\frown{v_j a}$ and there is no chordless cycle formed by the path $\\\\stackrel\\\\frown{v_j b}$.\\nFirst, suppose that for every chordless cycle $C_t$ on $\\\\stackrel\\\\frown{v_j a}$, at least one of the vertices of $C_t$ is adjacent to a vertex in $V(G) \\\\setminus V(P_1)$.\\nWe call one of the edges with one end in $C_t$ and other endpoint in $V(G) \\\\setminus V(P_1)$ by $e_t$. Let $v_j=w_0, w_1, \\\\dots, w_l=a$ be all vertices of the path $\\\\stackrel\\\\frown{v_j a}$ in $P_1$. Choose the shortest path $w_0 w_{i_1} w_{i_2} \\\\dots w_l$ such that $0 < i_1 < i_2 < \\\\dots < l$.\\nDefine a tree $T$ whose edge set is the thin edges in Figure \\\\ref{fig:deltaCycle}.\\\\\\\\\\nCall the cycle $w_0 w_{i_1} \\\\dots w_l \\\\stackrel\\\\frown{b w_0}$ by $C'$. Now, by removing $C'$, $q$ vertex disjoint paths $Q_1, \\\\dots, Q_q$ which are contained in $\\\\stackrel\\\\frown{v_j a}$ remain. Note that there exists a path of order $2$ in $C'$ which by adding this path to $Q_i$ we find a cycle $C_{t_i}$, for some $i$. Hence there exists an edge $e_{t_i}$ connecting $Q_i$ to $V(G) \\\\setminus V(P_1)$. Now, we define a tree $T$ whose the edge set is,\\n$$\\\\quad\\\\quad\\\\quad \\\\bigg( E\\\\Big(\\\\langle V(G) \\\\setminus V(C') \\\\rangle \\\\Big)\\\\; \\\\bigcap \\\\; \\\\Big(\\\\bigcup_{i=1}^3 E(P_i)\\\\Big) \\\\bigg) \\\\bigcup \\\\Big(\\\\big\\\\{e_{t_i} \\\\mid 1 \\\\leq i \\\\leq q \\\\big\\\\} \\\\Big).$$\\nApply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T,C'\\\\}$.\\\\\\\\\\n\\n\\\\begin{figure}[H]\\n \\\\begin{center}\\n \\\\includegraphics[width=40mm]{engImages/deltaCycle.pdf}\\n \\\\caption{The cycle $C'$ and the tree $T$}\\n \\\\label{fig:deltaCycle}\\n \\\\end{center}\\n\\\\end{figure}\\n\\nNext, assume that there exists a cycle $C_1$ formed by $\\\\stackrel\\\\frown{v_j a}$ such that none of the vertices of $C_1$ is adjacent to $V(G) \\\\setminus V(P_1)$. Choose the smallest cycle with this property. Obviously, this cycle is chordless. Now, three cases can be considered:\\\\\\\\\\n\\n\\\\begin{enumerate}[leftmargin=5pt,label=(\\\\roman*)]\\n\\\\item There exists a cycle $C_2$ formed by $P_2$ or $P_3$. Define the partition $C_1$, $C_2$ and a tree with the following edge set,\\n$$E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( \\\\bigcup_{i=1}^3 E(P_i) \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1}.\\\\\\\\\\n\\n\\\\item There is no chordless cycle formed by $P_2$ and by $P_3$, and there is at least one edge between $V(P_2)$ and $V(P_3)$. Let $ab \\\\in E(G)$, $a \\\\in V(P_2)$ and $b \\\\in V(P_3)$ and moreover $d_{P_2}(v_j, a) + d_{P_3}(v_j,b)$ is minimum. Notice that the cycle $\\\\stackrel\\\\frown{v_j a} \\\\stackrel\\\\frown{b v_j}$ is chordless. Let us call this cycle by $C_2$. Now, define the partition $C_2$ and a tree with the following edge set,\\n$$E\\\\Big(\\\\langle V(G) \\\\setminus V(C_2)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( \\\\bigcup_{i=1}^3 E(P_i) \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1}.\\\\\\\\\\n\\n\\\\item There is no chordless cycle formed by $P_2$ and by $P_3$, and there is no edge between $V(P_2)$ and $V(P_3)$. Let $C_2$ be the cycle consisting of two paths $P_2$ and $P_3$. Define the partition $C_2$ and a tree with the following edge set,\\n$$E\\\\Big(\\\\langle V(G) \\\\setminus V(C_2)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( \\\\bigcup_{i=1}^3 E(P_i) \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1}.\\n\\n\\\\end{enumerate}\\n\\n\\n\\\\end{enumerate}\\n\\n\\\\vspace{5mm}\\n\\\\item\\n\\\\textbf{Case 2.}\\n\\\\label{case:2}\\nAssume that $j < i$ for all Hamiltonian paths. Among all Hamiltonian paths consider the path such that $i'-j'$ is maximum. Now, three cases can be considered:\\\\\\\\\\n\\n\\\\begin{enumerate}[leftmargin=0pt,label=]\\n\\\\item \\\\textbf{Subcase 1.} There is no $s < j'$ and $t > i'$ such that $v_s v_t \\\\in E(G)$. By \\\\hyperref[remark:1]{Remark 1} $\\\\,$ there are two chordless cycles $C_1$ and $C_2$, respectively formed by the paths $v_1 v_{j'}$ and $v_{i'} v_n$. By assumption there is no edge $xy$, where $x \\\\in V(C_1)$ and $y \\\\in V(C_2)$.\\nDefine a tree $T$ with the edge set:\\n$$ E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big) \\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_{i'}v_n, v_{j'}v_1\\\\} \\\\Big).$$\\nNow, apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T, C_1, C_2\\\\}$.\\\\\\\\\\n\\n\\\\item \\\\textbf{Subcase 2.}\\n\\\\label{subcase:22} There are at least four indices $s, s' < j$ and $t, t' > i$ such that $v_s v_t, v_{s'} v_{t'} \\\\in E(G)$. Choose four indices $g, h < j$ and $e, f > i$ such that $v_h v_e, v_g v_f \\\\in E(G)$ and $|g-h| + |e-f|$ is minimum.\\n\\n\\\\begin{figure}[H]\\n \\\\begin{center}\\n \\\\includegraphics[width=90mm]{engImages/case2-subcase2.pdf}\\n \\\\caption{Two edges $v_h v_e$ and $v_g v_f$}\\n \\\\label{fig:non-overlapping}\\n \\\\end{center}\\n\\\\end{figure}\\n\\nThree cases can be considered:\\\\\\\\\\n\\n\\\\begin{enumerate}[leftmargin=0pt,label=(\\\\alph*)]\\n\\\\item There is no chordless cycle formed by $\\\\stackrel\\\\frown{v_g v_h}$ and by $\\\\stackrel\\\\frown{v_e v_f}$.\\n\\nConsider the cycle $\\\\stackrel\\\\frown{v_g v_h} \\\\stackrel\\\\frown{v_e v_f}v_g$ and call it $C$. Now, define a tree $T$ with the edge set,\\n$$\\\\,\\\\,\\\\,E\\\\Big(\\\\langle V(G) \\\\setminus V(C)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_1v_{j}, v_{i}v_n\\\\} \\\\Big),$$\\napply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T, C\\\\}$.\\\\\\\\\\n\\n\\\\item With no loss of generality, there exists a chordless cycle formed by $\\\\stackrel\\\\frown{v_e v_f}$ and there is no chordless cycle formed by the path $\\\\stackrel\\\\frown{v_g v_h}$. First suppose that there is a chordless cycle $C_1$ formed by $\\\\stackrel\\\\frown{v_e v_f}$ such that there is no edge between $V(C_1)$ and $\\\\{v_1, \\\\dots, v_j\\\\}$. By \\\\hyperref[remark:1]{Remark 1} $,$ there exists a chordless cycle $C_2$ formed by $\\\\stackrel\\\\frown{v_1 v_j}$. By assumption there is no edge between $V(C_1)$ and $V(C_2)$. Now, define a tree $T$ with the edge set,\\n\\n$$\\\\quad\\\\quad\\\\quad\\\\quad E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_1v_{j}, v_{i}v_n\\\\} \\\\Big),$$\\n\\nand apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T, C_1, C_2\\\\}$.\\n\\n$\\\\;$ Next assume that for every cycle $C_r$ formed by $\\\\stackrel\\\\frown{v_e v_f}$, there are two vertices $x_r \\\\in V(C_r)$ and $y_r \\\\in \\\\{v_1, \\\\dots, v_j\\\\}$ such that $x_r y_r \\\\in E(G)$. Let $v_e=w_0, w_1, \\\\dots, w_l=v_f$ be all vertices of the path $\\\\stackrel\\\\frown{v_e v_f}$ in $P$. Choose the shortest path $w_0 w_{i_1} w_{i_2} \\\\dots w_l$ such that $0 < i_1 < i_2 < \\\\dots < l$. Consider the cycle $w_0 w_{i_1} \\\\dots w_l \\\\stackrel\\\\frown{v_g v_h}$ and call it $C$. Now, by removing $C$, $q$ vertex disjoint paths $Q_1, \\\\dots, Q_q$ which are contained in $\\\\stackrel\\\\frown{v_e v_f}$ remain. Note that there exists a path of order $2$ in $C$ which by adding this path to $Q_i$ we find a cycle $C_{r_i}$, for some $i$. Hence there exists an edge $x_{r_i} y_{r_i}$ connecting $Q_i$ to $V(G) \\\\setminus V(\\\\stackrel\\\\frown{v_e v_f})$. We define a tree $T$ whose edge set is the edges,\\n$$\\\\quad\\\\quad\\\\quad\\\\quad\\\\quad\\\\quad E\\\\Big(\\\\langle V(G) \\\\setminus V(C)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_1v_{j}, v_{i}v_n\\\\} \\\\cup \\\\big\\\\{x_{r_i} y_{r_i} \\\\mid 1 \\\\leq i \\\\leq q\\\\big\\\\} \\\\Big),$$\\nthen apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$ on the partition $\\\\{T, C\\\\}$.\\\\\\\\\\n\\\\begin{figure}[H]\\n \\\\begin{center}\\n \\\\includegraphics[width=90mm]{engImages/deltaNonOverlapping.pdf}\\n \\\\caption{The tree $T$ and the shortest path $w_0 w_{i_1}\\\\dots w_l$}\\n \\\\label{fig:delta-non-overlapping}\\n \\\\end{center}\\n\\\\end{figure}\\n\\n\\\\item There are at least two chordless cycles, say $C_1$ and $C_2$ formed by the paths $\\\\stackrel\\\\frown{v_g v_h}$ and $\\\\stackrel\\\\frown{v_e v_f}$, respectively. Since $|g-h| + |e-f|$ is minimum, there is no edge $xy \\\\in E(G)$ with $x \\\\in V(C_1)$ and $y \\\\in V(C_2)$. Now, define a tree $T$ with the edge set,\\n$$\\\\quad\\\\quad\\\\quad\\\\quad E\\\\Big( \\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big) \\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_1 v_{j}, v_{i}v_n\\\\} \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition $\\\\{T, C_1, C_2\\\\}$.\\\\\\\\\\n\\\\end{enumerate}\\n\\n\\\\item \\\\textbf{Subcase 3.} There exist exactly two indices $s,t$, $s < j' < i' < t$ such that $v_s v_t \\\\in E(G)$ and there are no two other indices $s', t'$ such that $s' < j < i < t'$ and $v_{s'} v_{t'} \\\\in E(G)$. We can assume that there is no cycle formed by $\\\\stackrel\\\\frown{v_{s+1} v_j}$ or $\\\\stackrel\\\\frown{v_i v_{t-1}}$, to see this by symmetry consider a cycle $C$ formed by $\\\\stackrel\\\\frown{v_{s+1} v_j}$. By \\\\hyperref[remark:1]{Remark 1} $\\\\,$ there exist chordless cycles $C_1$ formed by $\\\\stackrel\\\\frown{v_{s+1} v_j}$ and $C_2$ formed by $\\\\stackrel\\\\frown{v_{i} v_n}$. By assumption $v_s v_t$ is the only edge such that $s < j$ and $t > i \\\\;$. Therefore, there is no edge between $V(C_1)$ and $V(C_2)$. Now, let $T$ be a tree defined by the edge set,\\n$$ E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_1v_{j}, v_{i}v_n\\\\} \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition \\\\{$T$, $C_1$, $C_2$\\\\}.\\\\\\\\\\n\\n$\\\\quad$Furthermore, we can also assume that either $s \\\\neq j'-1$ or $t \\\\neq i'+1$, otherwise we have the Hamiltonian cycle $\\\\stackrel\\\\frown{v_1 v_s} \\\\stackrel\\\\frown{v_t v_n} \\\\stackrel\\\\frown{v_{i'} v_{j'}} v_1$ and by \\\\cite[Theorem 9]{akbari} Conjecture \\\\theconjecture$\\\\,$ holds.\\n\\n$\\\\quad$By symmetry, suppose that $s \\\\neq j'-1$. Let $v_k$ be the vertex adjacent to $v_{j'-1}$, and $k \\\\notin \\\\{j'-2, j'\\\\}$. It can be shown that $k > j'-1$, since otherwise by considering the Hamiltonian path $P': \\\\; \\\\stackrel\\\\frown{ v_{k+1} v_{j'-1}}\\\\stackrel\\\\frown{v_k v_1} \\\\stackrel\\\\frown{v_{j'} v_n}$, the new $i'-j'$ is greater than the old one and this contradicts our assumption about $P$ in the \\\\hyperref[case:2]{Case 2}.\\n\\n$\\\\quad$We know that $j' < k < i$. Moreover, the fact that $\\\\stackrel\\\\frown{v_{s+1} v_j}$ does not form a cycle contradicts the case that $j' < k \\\\le j$. So $j < k < i$. Consider two cycles $C_1$ and $C_2$, respectively with the vertices $v_1 \\\\stackrel\\\\frown{v_{j'} v_{j}} v_1$ and $v_n \\\\stackrel\\\\frown{v_{i'} v_{i}} v_n$. The cycles $C_1$ and $C_2$ are chordless, otherwise there exist cycles formed by the paths $\\\\stackrel\\\\frown{v_{s+1} v_j}$ or $\\\\stackrel\\\\frown{v_i v_{t-1}}$. Now, define a tree $T$ with the edge set\\n$$ E\\\\Big(\\\\langle V(G) \\\\setminus \\\\big(V(C_1) \\\\cup V(C_2)\\\\big)\\\\rangle \\\\Big) \\\\bigcap \\\\Big( E(P) \\\\cup \\\\{v_s v_t, v_k v_{j'-1}\\\\} \\\\Big),$$\\nand apply \\\\hyperref[lemma:1]{Lemma 1} $\\\\,$for the partition \\\\{$T$, $C_1$, $C_2$\\\\}.\\n\\\\end{enumerate}\\n\\\\end{enumerate}\\n\\\\end{proof}\\n\\n\\\\noindent\\\\textbf{Remark 2.}\\n\\\\label{remark:2}\\nIndeed, in the proof of the previous theorem we showed a stronger result, that is, for every traceable cubic graph there is a decomposition with at most two cycles.\\n\\n\",\n \"id\": \"b7c40b41b7eedaa408f87d154284a1aba126589c\",\n \"metadata\": {\n \"file_path\": \"/home/ubuntu/dolma-v1_7/arxiv-0000.json.gz\"\n }\n },\n \"truncated_cells\": []\n },\n {\n \"row_idx\": 1,\n \"row\": {\n \"text\": \"\\\\section{Principle of nano strain-amplifier}\\r\\n\\r\\n\\\\begin{figure*}[t!]\\r\\n\\t\\\\centering\\r\\n\\t\\\\includegraphics[width=5.4in]{Fig1}\\r\\n\\t\\t\\\\vspace{-0.5em}\\r\\n\\t\\\\caption{Schematic sketches of nanowire strain sensors. (a)(b) Conventional non-released and released NW structure; \\r\\n\\t\\t(c)(d) The proposed nano strain-amplifier and its simplified physical model.}\\r\\n\\t\\\\label{fig:fig1}\\r\\n\\t\\t\\\\vspace{-1em}\\r\\n\\\\end{figure*}\\r\\nFigure \\\\ref{fig:fig1}(a) and 1(b) show the concept of the conventional structures of piezoresistive sensors. The piezoresistive elements are either released from, or kept on, the substrate. The sensitivity ($S$) of the sensors is defined based on the ratio of the relative resistance change ($\\\\Delta R/R$) of the sensing element and the strain applied to the substrate ($\\\\varepsilon_{sub}$):\\r\\n\\\\begin{equation}\\r\\nS = (\\\\Delta R/R)/\\\\varepsilon_{sub}\\r\\n\\\\label{eq:sensitivity}\\r\\n\\\\end{equation}\\r\\nIn addition, the relative resistance change $\\\\Delta R/R$ can be calculated from the gauge factor ($GF$) of the material used to make the piezoresistive elements: $\\\\Delta R/R = GF \\\\varepsilon_{ind}$, where $\\\\varepsilon_{ind}$ is the strain induced into the piezoresistor. In most of the conventional strain gauges as shown in Fig. \\\\ref{fig:fig1} (a,b), the thickness of the sensing layer is typically below a few hundred nanometers, which is much smaller than that of the substrate. Therefore, the strain induced into the piezoresistive elements is approximately the same as that of the substrate ($\\\\varepsilon_{ind} \\\\approx \\\\varepsilon_{sub}$). Consequently, to improve the sensitivity of strain sensors (e.g. enlarging $\\\\Delta R/R$), electrical approaches which can enlarge the gauge factor ($GF$) are required. Nevertheless, as aforementioned, the existence of the large gauge factor in nanowires due to quantum confinement or surface state, is still considered as controversial. \\n\\r\\nIt is also evident from Eq. \\\\ref{eq:sensitivity} that the sensitivity of strain sensors can also be improved using a mechanical approach, which enlarges the strain induced into the piezoresistive element. Figure \\\\ref{fig:fig1}(c) shows our proposed nano strain-amplifier structure, in which the piezoresistive nanowires are locally fabricated at the centre of a released bridge. The key idea of this structure is that, under a certain strain applied to the substrate, a large strain will be concentrated at the locally fabricated SiC nanowires. The working principle of the nano strain-amplifier is similar to that of the well-known dogbone structure, which is widely used to characterize the tensile strength of materials \\\\cite{dogbone1,dogbone2}. That is, when a stress is applied to the dogbone-shape of a certain material, a crack, if generated, will occur at the middle part of the dogbone. The large strain concentrated at the narrow area located at the centre part with respect to the wider areas located at outer region, causes the crack. Qualitative and quantitative explanations of the nano strain-amplifier are presented as follows. \\r\\n\\r\\nFor the sake of simplicity, the released micro frame and nanowire (single wire or array) of the nano strain-amplifier can be considered as solid springs, Fig. \\\\ref{fig:fig1}(d). The stiffness of these springs are proportional to their width ($w$) and inversely proportional to their length (l): $K \\\\propto w/l$. Consequently, the model of the released nanowire and micro frames can be simplified as a series of springs, where the springs with higher stiffness correspond to the micro frame, and the single spring with lower stiffness corresponds to the nanowire. It is well-known in classical physics that, for serially connected springs, a larger strain will be concentrated in the low--stiffness string, while a smaller strain will be induced in the high--stiffness string \\\\cite{Springbook}. The following analysis quantitatively explained the amplification of the strain.\\t\\r\\n\\r\\n\\\\begin{figure}[b!]\\r\\n\\t\\\\centering\\r\\n\\t\\\\includegraphics[width=3in]{Fig2}\\r\\n\\t\\\\vspace{-1em}\\r\\n\\t\\\\caption{Finite element analysis of the strain induced in to the nanowire array utilizing nano strain-amplifier.}\\r\\n\\t\\\\label{fig:fig2}\\r\\n\\\\end{figure}\\r\\nWhen a tensile mechanical strain ($\\\\varepsilon_{sub}$) is applied to the substrate, the released structure will also be elongated. Since the stiffness of the released frame is much smaller than that of the substrate, it is safe to assume that the released structure will follows the elongation of the substrate. The displacement of the released structure $\\\\Delta L$ is:\\r\\n\\\\begin{equation}\\r\\n\\\\Delta L = \\\\Delta L_m + \\\\Delta L_n = L_m \\\\varepsilon_m + L_n \\\\varepsilon_n\\r\\n\\\\label{eq:displacement}\\r\\n\\\\end{equation} \\r\\nwhere $L_m$, $L_n$ are the length; $\\\\Delta L_m$, $\\\\Delta L_n$ are the displacement; and $\\\\varepsilon_m$, $\\\\varepsilon_n$ are the strains induced into the micro spring and nano spring, respectively. The subscripts m and n stand for the micro frames and nanowires, respectively. Furthermore, due to the equilibrium of the stressing force ($F$) along the series of springs, the following relationship is established: $F= K_m\\\\Delta L_m = K_n \\\\Delta L_n$, where $K_m$, $K_n$ are the stiffness of the released micro frames and nanowires, respectively. Consequently the relationship between the displacement of the micro frame (higher stiffness) and nanowires (lower stiffness) is:\\r\\n\\\\begin{equation}\\r\\n\\\\frac{\\\\Delta L_m}{\\\\Delta L_n}=\\\\frac{K_n}{K_m}=\\\\frac{L_mw_n}{L_nw_m}\\r\\n\\\\label{eq:euili}\\r\\n\\\\end{equation}\\r\\nSubstituting Eqn. \\\\ref{eq:euili} into Eqn. \\\\ref{eq:displacement}, the strain induced into the locally fabricated nanowires is:\\r\\n\\\\begin{equation}\\r\\n\\\\varepsilon_n = \\\\frac{\\\\Delta L_n}{L_n} = \\\\frac{1}{1-\\\\frac{w_m-w_n}{w_m}\\\\frac{L_m}{L}}\\\\varepsilon_{sub}\\r\\n\\\\label{eq:strainamp}\\r\\n\\\\end{equation} \\r\\n\\r\\nEquation \\\\ref{eq:strainamp} indicates that increasing the ratio of $w_m/w_n$ and $L_m/L_n$ significantly amplifies the strain induced into the nanowire from the strain applied to the substrate. This model is also applicable to the case of nanowire arrays, in which $w_n$ is the total width of all nanowires in the array.\\n\\r\\nThe theoretical model is then verified using the finite element analysis (FEA). In the FEA simulation, we compare the strain induced into (i) non released nanowires, (ii) the conventionally released nanowires, and (iii) our nano strain-amplifier structure, using COMSOL Multiphysics \\\\texttrademark. In our nano strain amplifying structure, the width of the released frame was set to be 8 $\\\\mu$m, while the width of each nanowire in the array (3 wires) was set to be 370 nm. The nanowires array structure was selected as it can enhance the electrical conductance of the SiC nanowires resistor which makes the subsequent experimental demonstration easier. The ratio between the length of nanowires and micro bridge was set to be 1: 20. With this geometrical dimensions, strain induced into nanowires array $\\\\varepsilon_n$ was numerically calculated to be approximately 6 times larger than $\\\\varepsilon_{sub}$, Eqn. \\\\ref{eq:strainamp}. The simulation results show that for all structure, the elongation of non-released and released nanowires follow that of the substrate. In addition, strain was almost completely transferred into conventional released and non-released structures. Furthermore, the ratio of the strain induced in to the locally fabricated nanowires was estimated to be 5.9 times larger than that of the substrate, Fig. \\\\ref{fig:fig2}. These results are in solid agreement with the theoretical analysis presented above. For a nanowire array with an average width of 470 nm, the amplified gain of strain was found to be 4.5. \\t\\r\\n\\r\\nBased on the theoretical analysis, we conducted the following experiments to demonstrate the high sensitivity of SiC nanowire strain sensors using the nano strain-amplifier. A thin 3C-SiC film with its thickness of 300 nm was epitaxially grown on a 150 mm diameter Si wafer using low pressure chemical vapour deposition \\\\cite{SiC_growth}. The film was \\\\emph{in situ} doped using Al dopants. The carrier concentration of the p-type 3C-SiC was found to be $5 \\\\times 10^{18}$ cm$^{-3}$, using a hot probe technique \\\\cite{philip}. The details of the characteristics of the grown film can be found elsewhere \\\\cite{Phan_JMC}. Subsequently, I-shape p-type SiC resistors with aluminum electrodes deposited on the surface were patterned using inductive coupled plasma (ICP) etching. As the piezoresistance of p-type 3C-SiC depends on crystallographic orientation, all SiC resistors of the present work were aligned along [110] direction to maximize the piezoresistive effect. Next, the micro scale SiC resistors were then released from the Si substrate using dry etching (XeF$_2$). Finally, SiC nanowire arrays were formed at the centre of the released bridge using focused ion beam (FIB). Two types of nanowire array were fabricated with three nanowires for each array. The average width of each nanowire in each type were 380 nm and 470 nm, respectively. Figure \\\\ref{fig:fig3} shows the SEM images of the fabricated samples, including the conventional released structure, non-released nanowires, and the nano strain-amplifier. \\r\\n\\r\\n\\\\begin{figure}[t!]\\r\\n\\t\\\\centering\\r\\n\\t\\\\includegraphics[width=3in]{Fig3}\\r\\n\\t\\\\caption{SEM image of SiC strain sensors. (a) Released SiC micro bridge used for the subsequent fabrication of the nano strain-amplifier; (b) SEM of a micro SiC resistor where the SiC nanowires array were formed using FIB; (c) SEM of non-released SiC nanowires; (d) SEM of locally fabricated SiC nanowires released from the Si substrate (nano strain-amplifier).}\\r\\n\\t\\\\label{fig:fig3}\\r\\n\\t\\\\vspace{-1em}\\r\\n\\\\end{figure}\\r\\nThe current voltage (I-V) curves of all fabricated samples were characterized using a HP 4145 \\\\texttrademark ~parameter analyzer. The linear relationship between the applied voltage and measured current, indicated that Al made a good Ohmic contact with the highly doped SiC resistance, Fig. \\\\ref{fig:IV}. Additionally, the electrical conductivity of both nanowires and micro frame estimated from the I-V curve and the dimensions of the resistors shows almost the same value. This indicated that the FIB process did not cause a significant surface damage to the fabricated nanowires. \\r\\n\\t\\r\\n\\\\begin{figure}[b!]\\r\\n\\t\\\\centering\\r\\n\\t\\\\includegraphics[width=3in]{Fig4}\\r\\n\\t\\t\\\\vspace{-1.5em}\\r\\n\\t\\\\caption{Current voltage curves of the fabricated SiC resistors.}\\r\\n\\t\\\\label{fig:IV}\\r\\n\\n\\\\end{figure}\\r\\n\\r\\nThe bending experiment was used to characterize the piezoresistive effect in micro size SiC resistors and locally fabricated SiC nanowire array. In this experiment one end of the Si cantilever (with a thickness of 625 $\\\\mu$m, and a width of 7 mm) was fixed while the other end was deflected by applying different forces. The distance from the fabricated nanowires to the free end of the Si cantilever was approximately 45 mm. The strain induced into the Si substrate is $\\\\varepsilon_\\\\text{sub} = Mt/2EI$, where $M$ is the applied bending moment; and $t$, $E$ and $I$ are the thickness, Young's modulus and the moment of inertia of the Si cantilever, respectively. The response of the SiC resistance to applied strain was then measured using a multimeter (Agilent \\\\texttrademark 34401 A).\\n\\r\\n\\\\begin{figure}[h!]\\r\\n\\t\\\\centering\\r\\n\\t\\\\includegraphics[width=3in]{Fig5.eps}\\r\\n\\t\\t\\\\vspace{-1.5em}\\r\\n\\t\\\\caption{Experimental results. (a) A comparision between the relative resistance change in the nano strain-amplifiers, non released nanowires and released micro frames; (b) The repeatability of the SiC nanowires strain sensors utilizing the proposed structure.}\\r\\n\\t\\\\label{fig:DRR}\\r\\n\\t\\t\\t\\\\vspace{-1em}\\r\\n\\\\end{figure}\\t\\r\\nThe relative resistance change ($\\\\Delta R/R$) of the micro and nano SiC resistors was plotted against the strain induced into the Si substrate $\\\\varepsilon_{sub}$, Fig. \\\\ref{fig:DRR}(a). For all fabricated samples, the relative resistance change shows a good linear relationship with the applied strain ($\\\\varepsilon_{sub}$). In addition, with the same applied strain to the Si substrate, the resistance change of the SiC nanowires using the nano strain-amplifier was much larger than that of the the SiC micro resistor and the conventional non-released SiC nanowires. In addition, reducing the width of the SiC nanowires also resulted in the increase of the sensitivity. The magnitude of the piezoresistive effect in the nano strain-amplifier as well as conventional structures were then quantitatively evaluated based on the effective gauge factor ($GF_{eff}$), which is defined as the ratio of the relative resistance change to the applied strain to the substrate: $GF_{eff} = (\\\\Delta R/R)/\\\\varepsilon_{sub}$. Accordingly, the effective gauge factor of the released micro SiC was found to be 28, while that of the non-released SiC nanowires was 35. From the data shown in Fig. \\\\ref{fig:DRR}, the effective gauge factor of the 380 nm and 470 nm SiC nanowires in the nano strain-amplifier were calculated as 150 and 124, respectively. Thus for nanowire arrays with average widths of 380 nm and 470 nm, the sensitivity of the nano strain-amplifier was 5.4 times and 4.6 times larger than the bulk SiC, respectively. These results were consistent with analytical and numerical models presented above. The relative resistance change of the nano strain-amplifier also showed excellent linearity with the applied strain, with a linear regression of above 99\\\\%. \\r\\n\\r\\nThe resistance change of the nano strain-amplifier can also be converted into voltage signals using a Wheatstone bridge, Fig. \\\\ref{fig:DRR}(b). The output voltage of the nano strain-amplifier increases with increasing tensile strains from 0 ppm to 180 ppm, and returned to the initial value when the strain was completely removed, confirming a good repeatability after several strain induced cycles. The linearity of the relative resistance change, and the repeatability indicate that the proposed structure is promising for strain sensing applications.\\r\\n \\r\\nIn conclusion, this work presents a novel mechanical approach to obtain highly sensitive piezoresistance in nanowires based on a nano strain-amplifier. The key factor of the nano strain-amplifier lies on nanowires locally fabricated on a released micro structure. Experimental studies were conducted on SiC nanowires, confirming that by utilizing our nano strain-amplifier, the sensitivity of SiC nanowires was 5.4 times larger than that of conventional structures. This result indicated that the nano strain-amplifier is an excellent platform for ultra sensitive strain sensing applications. \\r\\n\\r\\n\\r\\n\",\n \"id\": \"1b77ae9f541b19668cc96624c7ec0f83945284e2\",\n \"metadata\": {\n \"file_path\": \"/home/ubuntu/dolma-v1_7/arxiv-0000.json.gz\"\n }\n },\n \"truncated_cells\": []\n }\n]",
"HUB_DATASET_PREVIEW: DATASET_NAME: \"KelvinTichana2/mentalhealthcurated\"\nFEATURES: {'Human': {'dtype': 'string', '_type': 'Value'}, 'Assistant': {'dtype': 'string', '_type': 'Value'}}\nDATA SAMPLE:\n[\n {\n \"row_idx\": 0,\n \"row\": {\n \"Human\": \"hello, hey, hi, good day, greetings, what's up?, how is it going\",\n \"Assistant\": \"Hello! How are you today!, Hey! What's up, Hey, How are you feeling today\"\n },\n \"truncated_cells\": []\n },\n {\n \"row_idx\": 1,\n \"row\": {\n \"Human\": \"cya, see you later, goodbye, Have a good day, bye, I am leaving\",\n \"Assistant\": \"Talk to you later!, Bye!, Goodbye!\"\n },\n \"truncated_cells\": []\n }\n]"
]
embeddings = model.encode(sentences)
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [4, 4]This is a sentence-transformers model finetuned from Alibaba-NLP/gte-base-en-v1.5 on the query-to-dataset-viewer-descriptions dataset. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.
SentenceTransformer(
(0): Transformer({'max_seq_length': 8192, 'do_lower_case': False}) with Transformer model: NewModel
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("query-to-dataset-viewer-descriptions")
# Run inference
sentences = [
'USER_QUERY: kotlin code dataset',
'HUB_DATASET_PREVIEW: DATASET_NAME: "mvasiliniuc/iva-kotlin-codeint"\nFEATURES: {\'repo_name\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'path\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'copies\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'size\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'content\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'license\': {\'dtype\': \'string\', \'_type\': \'Value\'}}\nDATA SAMPLE:\n[\n {\n "row_idx": 0,\n "row": {\n "repo_name": "Cognifide/gradle-aem-plugin",\n "path": "src/main/kotlin/com/cognifide/gradle/aem/instance/tasks/InstanceReload.kt",\n "copies": "1",\n "size": "1052",\n "content": "package com.cognifide.gradle.aem.instance.tasks\\n\\nimport com.cognifide.gradle.aem.common.instance.action.AwaitUpAction\\nimport com.cognifide.gradle.aem.common.instance.action.ReloadAction\\nimport com.cognifide.gradle.aem.common.instance.names\\nimport com.cognifide.gradle.aem.common.tasks.Instance\\nimport org.gradle.api.tasks.TaskAction\\n\\nopen class InstanceReload : Instance() {\\n\\n private var reloadOptions: ReloadAction.() -> Unit = {}\\n\\n fun reload(options: ReloadAction.() -> Unit) {\\n this.reloadOptions = options\\n }\\n\\n private var awaitUpOptions: AwaitUpAction.() -> Unit = {}\\n\\n fun awaitUp(options: AwaitUpAction.() -> Unit) {\\n this.awaitUpOptions = options\\n }\\n\\n @TaskAction\\n fun reload() {\\n instanceManager.awaitReloaded(anyInstances, reloadOptions, awaitUpOptions)\\n common.notifier.lifecycle(\\"Instance(s) reloaded\\", \\"Which: ${anyInstances.names}\\")\\n }\\n\\n init {\\n description = \\"Reloads all AEM instance(s).\\"\\n }\\n\\n companion object {\\n const val NAME = \\"instanceReload\\"\\n }\\n}\\n",\n "license": "apache-2.0"\n },\n "truncated_cells": []\n },\n {\n "row_idx": 1,\n "row": {\n "repo_name": "80998062/Fank",\n "path": "presentation/src/main/java/com/sinyuk/fanfou/ui/status/StatusView.kt",\n "copies": "1",\n "size": "8490",\n "content": "/*\\n *\\n * * Apache License\\n * *\\n * * Copyright [2017] Sinyuk\\n * *\\n * * Licensed under the Apache License, Version 2.0 (the \\"License\\");\\n * * you may not use this file except in compliance with the License.\\n * * You may obtain a copy of the License at\\n * *\\n * * http://www.apache.org/licenses/LICENSE-2.0\\n * *\\n * * Unless required by applicable law or agreed to in writing, software\\n * * distributed under the License is distributed on an \\"AS IS\\" BASIS,\\n * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * * See the License for the specific language governing permissions and\\n * * limitations under the License.\\n *\\n */\\n\\npackage com.sinyuk.fanfou.ui.status\\n\\nimport android.os.Build\\nimport android.os.Bundle\\nimport android.support.v4.app.Fragment\\nimport android.support.v4.app.FragmentPagerAdapter\\nimport android.text.Editable\\nimport android.text.TextWatcher\\nimport android.view.View\\nimport android.view.ViewTreeObserver\\nimport cn.dreamtobe.kpswitch.util.KeyboardUtil\\nimport com.linkedin.android.spyglass.suggestions.SuggestionsResult\\nimport com.linkedin.android.spyglass.suggestions.interfaces.Suggestible\\nimport com.linkedin.android.spyglass.suggestions.interfaces.SuggestionsResultListener\\nimport com.linkedin.android.spyglass.suggestions.interfaces.SuggestionsVisibilityManager\\nimport com.linkedin.android.spyglass.tokenization.QueryToken\\nimport com.linkedin.android.spyglass.tokenization.impl.WordTokenizer\\nimport com.linkedin.android.spyglass.tokenization.impl.WordTokenizerConfig\\nimport com.linkedin.android.spyglass.tokenization.interfaces.QueryTokenReceiver\\nimport com.sinyuk.fanfou.R\\nimport com.sinyuk.fanfou.base.AbstractActivity\\nimport com.sinyuk.fanfou.base.AbstractFragment\\nimport com.sinyuk.fanfou.di.Injectable\\nimport com.sinyuk.fanfou.domain.DO.Player\\nimport com.sinyuk.fanfou.domain.DO.Status\\nimport com.sinyuk.fanfou.domain.STATUS_LIMIT\\nimport com.sinyuk.fanfou.domain.StatusCreation\\nimport com.sinyuk.fanfou.domain.TIMELINE_CONTEXT\\nimport com.sinyuk.fanfou.ui.editor.EditorView\\nimport com.sinyuk.fanfou.ui.editor.MentionListView\\nimport com.sinyuk.fanfou.ui.timeline.TimelineView\\nimport com.sinyuk.fanfou.util.obtainViewModelFromActivity\\nimport com.sinyuk.fanfou.viewmodel.FanfouViewModelFactory\\nimport com.sinyuk.fanfou.viewmodel.PlayerViewModel\\nimport kotlinx.android.synthetic.main.status_view.*\\nimport kotlinx.android.synthetic.main.status_view_footer.*\\nimport kotlinx.android.synthetic.main.status_view_reply_actionbar.*\\nimport javax.inject.Inject\\n\\n\\n/**\\n * Created by sinyuk on 2018/1/12.\\n *\\n */\\nclass StatusView : AbstractFragment(), Injectable, QueryTokenReceiver, SuggestionsResultListener, SuggestionsVisibilityManager {\\n\\n companion object {\\n fun newInstance(status: Status, photoExtra: Bundle? = null) = StatusView().apply {\\n arguments = Bundle().apply {\\n putParcelable(\\"status\\", status)\\n putBundle(\\"photoExtra\\", photoExtra)\\n }\\n }\\n }\\n\\n override fun layoutId() = R.layout.status_view\\n\\n @Inject\\n lateinit var factory: FanfouViewModelFactory\\n\\n private val playerViewModel by lazy { obtainViewModelFromActivity(factory, PlayerViewModel::class.java) }\\n\\n override fun onEnterAnimationEnd(savedInstanceState: Bundle?) {\\n super.onEnterAnimationEnd(savedInstanceState)\\n navBack.setOnClickListener { onBackPressedSupport() }\\n setupEditor()\\n setupKeyboard()\\n onTextChanged(0)\\n setupViewPager()\\n\\n val status = arguments!!.getParcelable<Status>(\\"status\\")\\n fullscreenButton.setOnClickListener {\\n (activity as AbstractActivity).start(EditorView.newInstance(status.id,\\n replyEt.mentionsText,\\n StatusCreation.REPOST_STATUS))\\n replyEt.text = null\\n }\\n }\\n\\n private fun setupViewPager() {\\n val status = arguments!!.getParcelable<Status>(\\"status\\")\\n val bundle = arguments!!.getBundle(\\"photoExtra\\")\\n val fragments: List<Fragment> = if (findChildFragment(TimelineView::class.java) == null) {\\n val mentionView = MentionListView()\\n mentionView.onItemClickListener = onSuggestionSelectListener\\n mutableListOf(TimelineView.contextTimeline(TIMELINE_CONTEXT, status, bundle), mentionView)\\n } else {\\n mutableListOf(findChildFragment(TimelineView::class.java), MentionListView())\\n }\\n\\n viewPager.setPagingEnabled(false)\\n viewPager.offscreenPageLimit = 1\\n viewPager.adapter = object : FragmentPagerAdapter(childFragmentManager) {\\n override fun getItem(position: Int) = fragments[position]\\n\\n override fun getCount() = fragments.size\\n }\\n }\\n\\n private var keyboardListener: ViewTreeObserver.OnGlobalLayoutListener? = null\\n\\n private fun setupKeyboard() {\\n keyboardListener = KeyboardUtil.attach(activity, panelRoot, {\\n // TODO: how comes the Exception: panelRootContainer must not be null\\n panelRootContainer?.visibility =\\n if (it) {\\n if (replyEt.requestFocus()) replyEt.setSelection(replyEt.text.length)\\n View.VISIBLE\\n } else {\\n replyEt.clearFocus()\\n View.GONE\\n }\\n })\\n }\\n\\n private val config = WordTokenizerConfig.Builder()\\n .setExplicitChars(\\"@\\")\\n .setThreshold(3)\\n .setMaxNumKeywords(5)\\n .setWordBreakChars(\\" \\").build()\\n\\n private fun setupEditor() {\\n replyEt.tokenizer = WordTokenizer(config)\\n replyEt.setAvoidPrefixOnTap(true)\\n replyEt.setQueryTokenReceiver(this)\\n replyEt.setSuggestionsVisibilityManager(this)\\n replyEt.setAvoidPrefixOnTap(true)\\n\\n replyCommitButton.setOnClickListener { }\\n\\n if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)\\n textCountProgress.min = 0\\n textCountProgress.max = STATUS_LIMIT\\n replyEt.addTextChangedListener(object : TextWatcher {\\n override fun afterTextChanged(s: Editable?) {\\n onTextChanged(s?.length ?: 0)\\n }\\n\\n override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {\\n\\n }\\n\\n override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {\\n\\n }\\n })\\n }\\n\\n\\n /**\\n * @param count \\u5b57\\u6570\\n */\\n private fun onTextChanged(count: Int) {\\n textCountProgress.progress = count\\n replyCommitButton.isEnabled = count in 1..STATUS_LIMIT\\n }\\n\\n\\n private val onSuggestionSelectListener = object : MentionListView.OnItemClickListener {\\n override fun onItemClick(position: Int, item: Suggestible) {\\n (item as Player).let {\\n replyEt.insertMention(it)\\n displaySuggestions(false)\\n playerViewModel.updateMentionedAt(it) //\\n onTextChanged(replyEt.text.length)\\n replyEt.requestFocus()\\n replyEt.setSelection(replyEt.text.length)\\n }\\n }\\n }\\n\\n @Suppress(\\"PrivatePropertyName\\")\\n private val BUCKET = \\"player-mentioned\\"\\n\\n override fun onQueryReceived(queryToken: QueryToken): MutableList<String> {\\n val data = playerViewModel.filter(queryToken.keywords)\\n onReceiveSuggestionsResult(SuggestionsResult(queryToken, data), BUCKET)\\n return arrayOf(BUCKET).toMutableList()\\n }\\n\\n override fun onReceiveSuggestionsResult(result: SuggestionsResult, bucket: String) {\\n val data = result.suggestions\\n if (data?.isEmpty() != false) return\\n displaySuggestions(true)\\n findChildFragment(MentionListView::class.java).setData(data)\\n }\\n\\n override fun displaySuggestions(display: Boolean) {\\n viewPager.setCurrentItem(if (display) 1 else 0, true)\\n }\\n\\n override fun isDisplayingSuggestions() = viewPager.currentItem == 1\\n\\n override fun onBackPressedSupport(): Boolean {\\n when {\\n panelRootContainer.visibility == View.VISIBLE -> KeyboardUtil.hideKeyboard(panelRootContainer)\\n isDisplayingSuggestions -> displaySuggestions(false)\\n else -> pop()\\n }\\n return true\\n\\n }\\n\\n override fun onDestroy() {\\n keyboardListener?.let { KeyboardUtil.detach(activity, it) }\\n activity?.currentFocus?.let { KeyboardUtil.hideKeyboard(it) }\\n super.onDestroy()\\n }\\n\\n}",\n "license": "mit"\n },\n "truncated_cells": []\n }\n]',
'NEGATIVE: DATASET_NAME: "vikp/starcoder_cleaned"\nFEATURES: {\'code\': {\'dtype\': \'string\', \'_type\': \'Value\'}, \'repo_path\': {\'dtype\': \'string\', \'_type\': \'Value\'}}\nDATA SAMPLE:\n[\n {\n "row_idx": 0,\n "row": {\n "code": "# ---\\n# jupyter:\\n# jupytext:\\n# text_representation:\\n# extension: .py\\n# format_name: light\\n# format_version: \'1.5\'\\n# jupytext_version: 1.14.4\\n# kernelspec:\\n# display_name: Python 3\\n# language: python\\n# name: python3\\n# ---\\n\\n# # 09 Strain Gage\\n#\\n# This is one of the most commonly used sensor. It is used in many transducers. Its fundamental operating principle is fairly easy to understand and it will be the purpose of this lecture. \\n#\\n# A strain gage is essentially a thin wire that is wrapped on film of plastic. \\n# <img src=\\"img/StrainGage.png\\" width=\\"200\\">\\n# The strain gage is then mounted (glued) on the part for which the strain must be measured. \\n# <img src=\\"img/Strain_gauge_2.jpg\\" width=\\"200\\">\\n#\\n# ## Stress, Strain\\n# When a beam is under axial load, the axial stress, $\\\\sigma_a$, is defined as:\\n# \\\\begin{align*}\\n# \\\\sigma_a = \\\\frac{F}{A}\\n# \\\\end{align*}\\n# with $F$ the axial load, and $A$ the cross sectional area of the beam under axial load.\\n#\\n# <img src=\\"img/BeamUnderStrain.png\\" width=\\"200\\">\\n#\\n# Under the load, the beam of length $L$ will extend by $dL$, giving rise to the definition of strain, $\\\\epsilon_a$:\\n# \\\\begin{align*}\\n# \\\\epsilon_a = \\\\frac{dL}{L}\\n# \\\\end{align*}\\n# The beam will also contract laterally: the cross sectional area is reduced by $dA$. This results in a transverval strain $\\\\epsilon_t$. The transversal and axial strains are related by the Poisson\'s ratio:\\n# \\\\begin{align*}\\n# \\\\nu = - \\\\frac{\\\\epsilon_t }{\\\\epsilon_a}\\n# \\\\end{align*}\\n# For a metal the Poission\'s ratio is typically $\\\\nu = 0.3$, for an incompressible material, such as rubber (or water), $\\\\nu = 0.5$.\\n#\\n# Within the elastic limit, the axial stress and axial strain are related through Hooke\'s law by the Young\'s modulus, $E$:\\n# \\\\begin{align*}\\n# \\\\sigma_a = E \\\\epsilon_a\\n# \\\\end{align*}\\n#\\n# <img src=\\"img/ElasticRegime.png\\" width=\\"200\\">\\n\\n# ## Resistance of a wire\\n#\\n# The electrical resistance of a wire $R$ is related to its physical properties (the electrical resistiviy, $\\\\rho$ in $\\\\Omega$/m) and its geometry: length $L$ and cross sectional area $A$.\\n#\\n# \\\\begin{align*}\\n# R = \\\\frac{\\\\rho L}{A}\\n# \\\\end{align*}\\n#\\n# Mathematically, the change in wire dimension will result inchange in its electrical resistance. This can be derived from first principle:\\n# \\\\begin{align}\\n# \\\\frac{dR}{R} = \\\\frac{d\\\\rho}{\\\\rho} + \\\\frac{dL}{L} - \\\\frac{dA}{A}\\n# \\\\end{align}\\n# If the wire has a square cross section, then:\\n# \\\\begin{align*}\\n# A & = L\'^2 \\\\\\\\\\n# \\\\frac{dA}{A} & = \\\\frac{d(L\'^2)}{L\'^2} = \\\\frac{2L\'dL\'}{L\'^2} = 2 \\\\frac{dL\'}{L\'}\\n# \\\\end{align*}\\n# We have related the change in cross sectional area to the transversal strain.\\n# \\\\begin{align*}\\n# \\\\epsilon_t = \\\\frac{dL\'}{L\'}\\n# \\\\end{align*}\\n# Using the Poisson\'s ratio, we can relate then relate the change in cross-sectional area ($dA/A$) to axial strain $\\\\epsilon_a = dL/L$.\\n# \\\\begin{align*}\\n# \\\\epsilon_t &= - \\\\nu \\\\epsilon_a \\\\\\\\\\n# \\\\frac{dL\'}{L\'} &= - \\\\nu \\\\frac{dL}{L} \\\\; \\\\text{or}\\\\\\\\\\n# \\\\frac{dA}{A} & = 2\\\\frac{dL\'}{L\'} = -2 \\\\nu \\\\frac{dL}{L}\\n# \\\\end{align*}\\n# Finally we can substitute express $dA/A$ in eq. for $dR/R$ and relate change in resistance to change of wire geometry, remembering that for a metal $\\\\nu =0.3$:\\n# \\\\begin{align}\\n# \\\\frac{dR}{R} & = \\\\frac{d\\\\rho}{\\\\rho} + \\\\frac{dL}{L} - \\\\frac{dA}{A} \\\\\\\\\\n# & = \\\\frac{d\\\\rho}{\\\\rho} + \\\\frac{dL}{L} - (-2\\\\nu \\\\frac{dL}{L}) \\\\\\\\\\n# & = \\\\frac{d\\\\rho}{\\\\rho} + 1.6 \\\\frac{dL}{L} = \\\\frac{d\\\\rho}{\\\\rho} + 1.6 \\\\epsilon_a\\n# \\\\end{align}\\n# It also happens that for most metals, the resistivity increases with axial strain. In general, one can then related the change in resistance to axial strain by defining the strain gage factor:\\n# \\\\begin{align}\\n# S = 1.6 + \\\\frac{d\\\\rho}{\\\\rho}\\\\cdot \\\\frac{1}{\\\\epsilon_a}\\n# \\\\end{align}\\n# and finally, we have:\\n# \\\\begin{align*}\\n# \\\\frac{dR}{R} = S \\\\epsilon_a\\n# \\\\end{align*}\\n# $S$ is materials dependent and is typically equal to 2.0 for most commercially availabe strain gages. It is dimensionless.\\n#\\n# Strain gages are made of thin wire that is wraped in several loops, effectively increasing the length of the wire and therefore the sensitivity of the sensor.\\n#\\n# _Question:\\n#\\n# Explain why a longer wire is necessary to increase the sensitivity of the sensor_.\\n#\\n# Most commercially available strain gages have a nominal resistance (resistance under no load, $R_{ini}$) of 120 or 350 $\\\\Omega$.\\n#\\n# Within the elastic regime, strain is typically within the range $10^{-6} - 10^{-3}$, in fact strain is expressed in unit of microstrain, with a 1 microstrain = $10^{-6}$. Therefore, changes in resistances will be of the same order. If one were to measure resistances, we will need a dynamic range of 120 dB, whih is typically very expensive. Instead, one uses the Wheatstone bridge to transform the change in resistance to a voltage, which is easier to measure and does not require such a large dynamic range.\\n\\n# ## Wheatstone bridge:\\n# <img src=\\"img/WheatstoneBridge.png\\" width=\\"200\\">\\n#\\n# The output voltage is related to the difference in resistances in the bridge:\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} = \\\\frac{R_1R_3-R_2R_4}{(R_1+R_4)(R_2+R_3)}\\n# \\\\end{align*}\\n#\\n# If the bridge is balanced, then $V_o = 0$, it implies: $R_1/R_2 = R_4/R_3$.\\n#\\n# In practice, finding a set of resistors that balances the bridge is challenging, and a potentiometer is used as one of the resistances to do minor adjustement to balance the bridge. If one did not do the adjustement (ie if we did not zero the bridge) then all the measurement will have an offset or bias that could be removed in a post-processing phase, as long as the bias stayed constant.\\n#\\n# If each resistance $R_i$ is made to vary slightly around its initial value, ie $R_i = R_{i,ini} + dR_i$. For simplicity, we will assume that the initial value of the four resistances are equal, ie $R_{1,ini} = R_{2,ini} = R_{3,ini} = R_{4,ini} = R_{ini}$. This implies that the bridge was initially balanced, then the output voltage would be:\\n#\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} = \\\\frac{1}{4} \\\\left( \\\\frac{dR_1}{R_{ini}} - \\\\frac{dR_2}{R_{ini}} + \\\\frac{dR_3}{R_{ini}} - \\\\frac{dR_4}{R_{ini}} \\\\right)\\n# \\\\end{align*}\\n#\\n# Note here that the changes in $R_1$ and $R_3$ have a positive effect on $V_o$, while the changes in $R_2$ and $R_4$ have a negative effect on $V_o$. In practice, this means that is a beam is a in tension, then a strain gage mounted on the branch 1 or 3 of the Wheatstone bridge will produce a positive voltage, while a strain gage mounted on branch 2 or 4 will produce a negative voltage. One takes advantage of this to increase sensitivity to measure strain.\\n#\\n# ### Quarter bridge\\n# One uses only one quarter of the bridge, ie strain gages are only mounted on one branch of the bridge.\\n#\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} = \\\\pm \\\\frac{1}{4} \\\\epsilon_a S\\n# \\\\end{align*}\\n# Sensitivity, $G$:\\n# \\\\begin{align*}\\n# G = \\\\frac{V_o}{\\\\epsilon_a} = \\\\pm \\\\frac{1}{4}S V_s\\n# \\\\end{align*}\\n#\\n#\\n# ### Half bridge\\n# One uses half of the bridge, ie strain gages are mounted on two branches of the bridge.\\n#\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} = \\\\pm \\\\frac{1}{2} \\\\epsilon_a S\\n# \\\\end{align*}\\n#\\n# ### Full bridge\\n#\\n# One uses of the branches of the bridge, ie strain gages are mounted on each branch.\\n#\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} = \\\\pm \\\\epsilon_a S\\n# \\\\end{align*}\\n#\\n# Therefore, as we increase the order of bridge, the sensitivity of the instrument increases. However, one should be carefull how we mount the strain gages as to not cancel out their measurement.\\n\\n# _Exercise_\\n#\\n# 1- Wheatstone bridge\\n#\\n# <img src=\\"img/WheatstoneBridge.png\\" width=\\"200\\">\\n#\\n# > How important is it to know \\\\& match the resistances of the resistors you employ to create your bridge?\\n# > How would you do that practically?\\n# > Assume $R_1=120\\\\,\\\\Omega$, $R_2=120\\\\,\\\\Omega$, $R_3=120\\\\,\\\\Omega$, $R_4=110\\\\,\\\\Omega$, $V_s=5.00\\\\,\\\\text{V}$. What is $V_\\\\circ$?\\n\\nVs = 5.00\\nVo = (120**2-120*110)/(230*240) * Vs\\nprint(\'Vo = \',Vo, \' V\')\\n\\n# typical range in strain a strain gauge can measure\\n# 1 -1000 micro-Strain\\nAxialStrain = 1000*10**(-6) # axial strain\\nStrainGageFactor = 2\\nR_ini = 120 # Ohm\\nR_1 = R_ini+R_ini*StrainGageFactor*AxialStrain\\nprint(R_1)\\nVo = (120**2-120*(R_1))/((120+R_1)*240) * Vs\\nprint(\'Vo = \', Vo, \' V\')\\n\\n# > How important is it to know \\\\& match the resistances of the resistors you employ to create your bridge?\\n# > How would you do that practically?\\n# > Assume $R_1= R_2 =R_3=120\\\\,\\\\Omega$, $R_4=120.01\\\\,\\\\Omega$, $V_s=5.00\\\\,\\\\text{V}$. What is $V_\\\\circ$?\\n\\nVs = 5.00\\nVo = (120**2-120*120.01)/(240.01*240) * Vs\\nprint(Vo)\\n\\n# 2- Strain gage 1:\\n#\\n# One measures the strain on a bridge steel beam. The modulus of elasticity is $E=190$ GPa. Only one strain gage is mounted on the bottom of the beam; the strain gage factor is $S=2.02$.\\n#\\n# > a) What kind of electronic circuit will you use? Draw a sketch of it.\\n#\\n# > b) Assume all your resistors including the unloaded strain gage are balanced and measure $120\\\\,\\\\Omega$, and that the strain gage is at location $R_2$. The supply voltage is $5.00\\\\,\\\\text{VDC}$. Will $V_\\\\circ$ be positive or negative when a downward load is added?\\n\\n# In practice, we cannot have all resistances = 120 $\\\\Omega$. at zero load, the bridge will be unbalanced (show $V_o \\\\neq 0$). How could we balance our bridge?\\n#\\n# Use a potentiometer to balance bridge, for the load cell, we \'\'zero\'\' the instrument.\\n#\\n# Other option to zero-out our instrument? Take data at zero-load, record the voltage, $V_{o,noload}$. Substract $V_{o,noload}$ to my data.\\n\\n# > c) For a loading in which $V_\\\\circ = -1.25\\\\,\\\\text{mV}$, calculate the strain $\\\\epsilon_a$ in units of microstrain.\\n\\n# \\\\begin{align*}\\n# \\\\frac{V_o}{V_s} & = - \\\\frac{1}{4} \\\\epsilon_a S\\\\\\\\\\n# \\\\epsilon_a & = -\\\\frac{4}{S} \\\\frac{V_o}{V_s}\\n# \\\\end{align*}\\n\\nS = 2.02\\nVo = -0.00125\\nVs = 5\\neps_a = -1*(4/S)*(Vo/Vs)\\nprint(eps_a)\\n\\n# > d) Calculate the axial stress (in MPa) in the beam under this load.\\n\\n\\n\\n# > e) You now want more sensitivity in your measurement, you install a second strain gage on to\\n\\n# p of the beam. Which resistor should you use for this second active strain gage?\\n#\\n# > f) With this new setup and the same applied load than previously, what should be the output voltage?\\n\\n# 3- Strain Gage with Long Lead Wires \\n#\\n# <img src=\\"img/StrainGageLongWires.png\\" width=\\"360\\">\\n#\\n# A quarter bridge strain gage Wheatstone bridge circuit is constructed with $120\\\\,\\\\Omega$ resistors and a $120\\\\,\\\\Omega$ strain gage. For this practical application, the strain gage is located very far away form the DAQ station and the lead wires to the strain gage are $10\\\\,\\\\text{m}$ long and the lead wire have a resistance of $0.080\\\\,\\\\Omega/\\\\text{m}$. The lead wire resistance can lead to problems since $R_{lead}$ changes with temperature.\\n#\\n# > Design a modified circuit that will cancel out the effect of the lead wires.\\n\\n# ## Homework\\n#\\n",\n "repo_path": "Lectures/09_StrainGage.ipynb"\n },\n "truncated_cells": []\n },\n {\n "row_idx": 1,\n "row": {\n "code": "# ---\\n# jupyter:\\n# jupytext:\\n# split_at_heading: true\\n# text_representation:\\n# extension: .py\\n# format_name: light\\n# format_version: \'1.5\'\\n# jupytext_version: 1.14.4\\n# kernelspec:\\n# display_name: Python 3\\n# language: python\\n# name: python3\\n# ---\\n\\n#export\\nfrom fastai.basics import *\\nfrom fastai.tabular.core import *\\nfrom fastai.tabular.model import *\\n\\nfrom fastai.tabular.data import *\\n\\n#hide\\nfrom nbdev.showdoc import *\\n\\n\\n# +\\n#default_exp tabular.learner\\n# -\\n\\n# # Tabular learner\\n#\\n# > The function to immediately get a `Learner` ready to train for tabular data\\n\\n# The main function you probably want to use in this module is `tabular_learner`. It will automatically create a `TabulaModel` suitable for your data and infer the irght loss function. See the [tabular tutorial](http://docs.fast.ai/tutorial.tabular) for an example of use in context.\\n\\n# ## Main functions\\n\\n#export\\n@log_args(but_as=Learner.__init__)\\nclass TabularLearner(Learner):\\n \\"`Learner` for tabular data\\"\\n def predict(self, row):\\n tst_to = self.dls.valid_ds.new(pd.DataFrame(row).T)\\n tst_to.process()\\n tst_to.conts = tst_to.conts.astype(np.float32)\\n dl = self.dls.valid.new(tst_to)\\n inp,preds,_,dec_preds = self.get_preds(dl=dl, with_input=True, with_decoded=True)\\n i = getattr(self.dls, \'n_inp\', -1)\\n b = (*tuplify(inp),*tuplify(dec_preds))\\n full_dec = self.dls.decode((*tuplify(inp),*tuplify(dec_preds)))\\n return full_dec,dec_preds[0],preds[0]\\n\\n\\nshow_doc(TabularLearner, title_level=3)\\n\\n\\n# It works exactly as a normal `Learner`, the only difference is that it implements a `predict` method specific to work on a row of data.\\n\\n#export\\n@log_args(to_return=True, but_as=Learner.__init__)\\n@delegates(Learner.__init__)\\ndef tabular_learner(dls, layers=None, emb_szs=None, config=None, n_out=None, y_range=None, **kwargs):\\n \\"Get a `Learner` using `dls`, with `metrics`, including a `TabularModel` created using the remaining params.\\"\\n if config is None: config = tabular_config()\\n if layers is None: layers = [200,100]\\n to = dls.train_ds\\n emb_szs = get_emb_sz(dls.train_ds, {} if emb_szs is None else emb_szs)\\n if n_out is None: n_out = get_c(dls)\\n assert n_out, \\"`n_out` is not defined, and could not be infered from data, set `dls.c` or pass `n_out`\\"\\n if y_range is None and \'y_range\' in config: y_range = config.pop(\'y_range\')\\n model = TabularModel(emb_szs, len(dls.cont_names), n_out, layers, y_range=y_range, **config)\\n return TabularLearner(dls, model, **kwargs)\\n\\n\\n# If your data was built with fastai, you probably won\'t need to pass anything to `emb_szs` unless you want to change the default of the library (produced by `get_emb_sz`), same for `n_out` which should be automatically inferred. `layers` will default to `[200,100]` and is passed to `TabularModel` along with the `config`.\\n#\\n# Use `tabular_config` to create a `config` and cusotmize the model used. There is just easy access to `y_range` because this argument is often used.\\n#\\n# All the other arguments are passed to `Learner`.\\n\\npath = untar_data(URLs.ADULT_SAMPLE)\\ndf = pd.read_csv(path/\'adult.csv\')\\ncat_names = [\'workclass\', \'education\', \'marital-status\', \'occupation\', \'relationship\', \'race\']\\ncont_names = [\'age\', \'fnlwgt\', \'education-num\']\\nprocs = [Categorify, FillMissing, Normalize]\\ndls = TabularDataLoaders.from_df(df, path, procs=procs, cat_names=cat_names, cont_names=cont_names, \\n y_names=\\"salary\\", valid_idx=list(range(800,1000)), bs=64)\\nlearn = tabular_learner(dls)\\n\\n#hide\\ntst = learn.predict(df.iloc[0])\\n\\n# +\\n#hide\\n#test y_range is passed\\nlearn = tabular_learner(dls, y_range=(0,32))\\nassert isinstance(learn.model.layers[-1], SigmoidRange)\\ntest_eq(learn.model.layers[-1].low, 0)\\ntest_eq(learn.model.layers[-1].high, 32)\\n\\nlearn = tabular_learner(dls, config = tabular_config(y_range=(0,32)))\\nassert isinstance(learn.model.layers[-1], SigmoidRange)\\ntest_eq(learn.model.layers[-1].low, 0)\\ntest_eq(learn.model.layers[-1].high, 32)\\n\\n\\n# -\\n\\n#export\\n@typedispatch\\ndef show_results(x:Tabular, y:Tabular, samples, outs, ctxs=None, max_n=10, **kwargs):\\n df = x.all_cols[:max_n]\\n for n in x.y_names: df[n+\'_pred\'] = y[n][:max_n].values\\n display_df(df)\\n\\n\\n# ## Export -\\n\\n#hide\\nfrom nbdev.export import notebook2script\\nnotebook2script()\\n\\n\\n",\n "repo_path": "nbs/43_tabular.learner.ipynb"\n },\n "truncated_cells": []\n }\n]',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]
# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]
TripletEvaluator| Metric | Value |
|---|---|
| cosine_accuracy | 1.0 |
| dot_accuracy | 0.0 |
| manhattan_accuracy | 1.0 |
| euclidean_accuracy | 1.0 |
| max_accuracy | 1.0 |
query, positive, and negative| query | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | positive | negative |
|---|---|---|
USER_QUERY: LLM paper dataset |
HUB_DATASET_PREVIEW: DATASET_NAME: "MarkrAI/AutoRAG-evaluation-2024-LLM-paper-v1" |
NEGATIVE: DATASET_NAME: "emozilla/dolma-v1_7-arxiv" |
USER_QUERY: code vulnerability dataset |
HUB_DATASET_PREVIEW: DATASET_NAME: "benjis/bigvul" |
NEGATIVE: DATASET_NAME: "sfakhoury/NL2Fix" |
USER_QUERY: english korean translation dataset |
HUB_DATASET_PREVIEW: DATASET_NAME: "yoonjae22/Aihub_translate" |
NEGATIVE: DATASET_NAME: "werty1248/EnKo-Translation-LongTextOnly-dedup" |
CachedMultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
query, positive, and negative| query | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details |
|
|
|
| query | positive | negative |
|---|---|---|
USER_QUERY: multimodal conversation dataset |
HUB_DATASET_PREVIEW: DATASET_NAME: "BUAADreamer/llava-en-zh-2k" |
NEGATIVE: DATASET_NAME: "passing2961/photochat_plus" |
USER_QUERY: question answering dataset for technical documentation |
HUB_DATASET_PREVIEW: DATASET_NAME: "hythyt/preguntas-respuestas-RAG" |
NEGATIVE: DATASET_NAME: "cmalaviya/expertqa" |
USER_QUERY: conversational ai training dataset |
HUB_DATASET_PREVIEW: DATASET_NAME: "dataautogpt3/flan1m-alpaca-uncensored" |
NEGATIVE: DATASET_NAME: "sgp-bench/open-instruct-gpt4o_40k" |
CachedMultipleNegativesRankingLoss with these parameters:{
"scale": 20.0,
"similarity_fct": "cos_sim"
}
eval_strategy: stepsper_device_train_batch_size: 4per_device_eval_batch_size: 4num_train_epochs: 200warmup_ratio: 0.1bf16: Trueload_best_model_at_end: Truebatch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 4per_device_eval_batch_size: 4per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 5e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 200max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Trueignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}deepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torchoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Falsehub_always_push: Falsegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseeval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters: auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Nonedispatch_batches: Nonesplit_batches: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseeval_use_gather_object: Falsebatch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportional| Epoch | Step | Training Loss | loss | max_accuracy |
|---|---|---|---|---|
| 0 | 0 | - | - | 0.5 |
| 0.3497 | 100 | 1.0509 | 0.7070 | - |
| 0.6993 | 200 | 0.6183 | 0.3396 | - |
| 1.0490 | 300 | 0.3746 | 0.2282 | - |
| 1.3986 | 400 | 0.2481 | 0.1616 | - |
| 1.7483 | 500 | 0.2198 | 0.1302 | - |
| 2.0979 | 600 | 0.166 | 0.1164 | - |
| 2.4476 | 700 | 0.1045 | 0.1174 | - |
| 2.7972 | 800 | 0.0797 | 0.1095 | - |
| 3.1469 | 900 | 0.0422 | 0.1176 | - |
| 3.4965 | 1000 | 0.0595 | 0.1115 | - |
| 3.8462 | 1100 | 0.0416 | 0.1008 | - |
| 4.1958 | 1200 | 0.0174 | 0.1233 | - |
| 4.5455 | 1300 | 0.0273 | 0.1032 | - |
| 4.8951 | 1400 | 0.0389 | 0.0990 | - |
| 5.2448 | 1500 | 0.0126 | 0.0963 | - |
| 5.5944 | 1600 | 0.0074 | 0.1193 | - |
| 5.9441 | 1700 | 0.0165 | 0.1379 | - |
| 6.2937 | 1800 | 0.0046 | 0.1127 | - |
| 6.6434 | 1900 | 0.0158 | 0.1289 | - |
| 6.9930 | 2000 | 0.0157 | 0.1009 | - |
| 7.3427 | 2100 | 0.0032 | 0.1075 | - |
| 7.6923 | 2200 | 0.0072 | 0.1289 | - |
| 8.0420 | 2300 | 0.0192 | 0.1176 | - |
| 8.3916 | 2400 | 0.001 | 0.1214 | - |
| 8.7413 | 2500 | 0.024 | 0.1320 | 1.0 |
@inproceedings{reimers-2019-sentence-bert,
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
author = "Reimers, Nils and Gurevych, Iryna",
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
month = "11",
year = "2019",
publisher = "Association for Computational Linguistics",
url = "https://arxiv.org/abs/1908.10084",
}
@misc{gao2021scaling,
title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
year={2021},
eprint={2101.06983},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Base model
Alibaba-NLP/gte-base-en-v1.5